[Python Challenge通关]第3关
第 3 关
问题
One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.
一个小写字母,每边都有三个大保镖。
分析
联想到上一关,我们再右键查看页面源码,可以看到也有一堆字符,根据提示信息,我们需要找到左右两边都被3个大写字母包围的小写字母。我们可以使用正则表达式来实现。
<!--
kAewtloYgcFQaJNhHVGxXDiQmzjfcpYbzxlWrVcqsmUbCunkfxZWDZjUZMiGqhRRiUvGmYmvnJIHEmbT
MUKLECKdCthezSYBpIElRnZugFAxDRtQPpyeCBgBfaRVvvguRXLvkAdLOeCKxsDUvBBCwdpMMWmuELeG
我们想一下一个小写字母,每边都有三个大保镖,这样的规则应该类似 AAAaAAA
,我们尝试一下。
import re
text = '''复制那一堆字符进来'''
result = re.findall(r'[A-Z]{3}([a-z]{1})[A-Z]{3}', text)
print(''.join(result))
# jfeiauzroivgzbmpszazlutnwsdofbiwqdjbzshfrblqgsbydajygcbjwggtdfjeobcmdlzxajvitecgpkcfwqbvkoietpiijanvqjjgtcpadjkgcluaidgumcdskunujfcjfmbzkzsasdxsqqqlaeisjefjfdaoljaywxjthqjknednxnsahxqedoeqsdcmltcsnwakjxtytaalhgabekfmyimwrkffydghiunlriwgkuzqljjbsxguytfsatejmdwkfbzifdknpcqimvehxujszbuyutsompijjojspbwlroefiwmrsjstdjhfwxhnthsoosmoqtufoxvpvpjkgiaqgfrhufxxdnjiwtfqusbkeakunjgknpibklgjounivhgxsnekxgrrbslpuaouvhzbilbirmqqxtktgcnkdljoasnexwtgvwjegurnksokjtrovpmykzgeolwysfidemflmkwmj
我们发现找到了很多,把这些字符替换页面的 url 发现失败了,我们再想下我们的匹配规则是不是有问题?
我们的规则类似 AAAaAAA
,那么如果字符串中含有类似 AAAAaAAA
,这样的也会被匹配出来,再回头看下提示信息,有个但是 EXACTLY
还特意大写了,意思是要 恰好每边 3 个大写字符,所以我们需要修改匹配规则,修改成类似 aAAAaAAAa
,这样就能保证中间的字符每边恰好有 3 个大写字符。
import re
text = '''复制那一堆字符进来'''
result = re.findall(r'[a-z]{1}[A-Z]{3}([a-z]{1})[A-Z]{3}[a-z]{1}', text)
print(''.join(result))
# linkedlist
我们得到了 linkedlist
,替换页面 url,就可以进入下一关。
补充
我们打开了 http://www.pythonchallenge.com/pc/def/linkedlist.html 发现页面上出现了一个 linkedlist.php
,提示我们新的 url 应该是 http://www.pythonchallenge.com/pc/def/linkedlist.php
参考资源: