第三题链接:http://www.pythonchallenge.com/pc/def/equality.html
由于第二题给的思路,看到页面上面提示并不是很多,就想着看源代码,刚好又出现一堆大小写的字母,加上图片下给的hint:One small letter, surrounded by EXACTLY three big bodyguards on each of its sides。基本上理解题目是想让我们找出前后都有三个大写字母的小写字母。想要用正则表达式来完成:
import re txt = ''' '''#里面添加要测试的文档内容 txt = txt.strip() s = '' pattern = re.compile(r'[A-Z]{3}[a-z][A-Z]{3}') match = pattern.match(txt) if match: s = match.group() print s
想试一下不用读取文档的方式,直接用字符串处理,但是,得到的结果为空,好像是因为里面有换行符。所以,不行的样子。这一次总算自己把正则表达式写正确了,看了攻略,说要刚刚好前面三个大写字母,后面三个大写字母,所以,这个正则表达式还是错的。。
import re txt = ''' ''' s = '' s = s.join(re.findall(r'[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]',txt)) print s
得到的结果是:
qIQNlQSLieOEKiVEYjaZADnMCZqbZUTkLYNguCNDeHSBjkOIXdKBFhdXJVlGZVmgZAGiLQZxvCJAsACFlqKWGtIDCj
基本上可以找到结果是linkedlist,后面再加上两句正则表达式,直接得到结果
import re txt = ''''''# s = '' s = s.join(re.findall(r'[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]',txt)) r = ''.join(re.findall(r'[A-Z][a-z][A-Z]',s)) r = ''.join(re.findall(r'[a-z]',r)) print r
像以前一样,最后的地址改成:http://www.pythonchallenge.com/pc/def/linkedlist.html
得到提示:linkedlist.php
所以,最后的网址:http://www.pythonchallenge.com/pc/def/linkedlist.php
最开心的是正则表达式总算理解一点点的,但是对于字符串的一些处理还是很多地方不懂,Python强大的处理功能总是没有应用得上,一直都想着写循环。。