python challenge 第三关解法 http://www.pythonchallenge.com

来源:互联网 发布:mac无法接收打包文件 编辑:程序博客网 时间:2024/05/16 18:25
import res = ''.join(s.split())fetch = re.compile(r'[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]').findallprint ''.join(fetch(s))


结果为:linkedlist


s 为第三关网页源码中的被注释的部分,第三关网页为:http://www.pythonchallenge.com/pc/def/equality.html


解决这关的关键就在于第三关图片下面的图示信息:

One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.

该句的意思是:有一个小写字母,它的两边有三个大写字母。

这句话的关键点在于 EXACTLY 表达的意思,其实它的意思是表示 这个小写字母两边只有三个大写字母,是”只有“。

本人英文比较烂,刚开始的时候,自认为小聪明,以为 EXACTLY 是大写的、粗体字,还比其他单词要大,于是自然而然的写下了如下正则:

fetch = re.compile(r'[EXACTLY]{3}([a-z])[EXACTLY]{3}').findall

可是运行起来才发现,错啦,-_-

于是转化思路,再次写了个错误正则

fetch = re.compile(r'[A-Z]{3}([a-z])[A-Z]{3}').findall

-_-到底咋回事呢,原来,我还是没完全搞懂意思,其实应该是小写字母的两边只能有3个大写字母,不能多,也不能少,所以正确的正则应该是:

fetch = re.compile(r'[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]').findall

很受伤呀……

原创粉丝点击