import re
s = ''.join(s.split())
fetch = re.compile(r'[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]').findall
print ''.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
很受伤呀……