[Python Challenge通关]第3关 re

bodyguard

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

一个小写字母,每边都有三个大保镖。

挑战地址,点我

分析

右键查看网页源码,可以看到也有一堆字符。

<!--
kAewtloYgcFQaJNhHVGxXDiQmzjfcpYbzxlWrVcqsmUbCunkfxZWDZjUZMiGqhRRiUvGmYmvnJIHEmbT
MUKLECKdCthezSYBpIElRnZugFAxDRtQPpyeCBgBfaRVvvguRXLvkAdLOeCKxsDUvBBCwdpMMWmuELeG
... 省略

根据提示信息,需要找到左右两边都被3个大写字母包围的小写字母,类似 AAAaAAA,可以使用正则表达式来实现:

#!/usr/bin/env/ python3

import re

text = '''复制那一堆字符进来'''
result = re.findall(r'[A-Z]{3}([a-z]{1})[A-Z]{3}', text)
print(''.join(result))

输出结果:

jfeiauzroivgzbmpszazlutnwsdofbiwqdjbzshfrblqgsbydajygcbjwggtdfjeobcmdlzxajvitecgpkcfwqbvkoietpiijanvqjjgtcpadjkgcluaidgumcdskunujfcjfmbzkzsasdxsqqqlaeisjefjfdaoljaywxjthqjknednxnsahxqedoeqsdcmltcsnwakjxtytaalhgabekfmyimwrkffydghiunlriwgkuzqljjbsxguytfsatejmdwkfbzifdknpcqimvehxujszbuyutsompijjojspbwlroefiwmrsjstdjhfwxhnthsoosmoqtufoxvpvpjkgiaqgfrhufxxdnjiwtfqusbkeakunjgknpibklgjounivhgxsnekxgrrbslpuaouvhzbilbirmqqxtktgcnkdljoasnexwtgvwjegurnksokjtrovpmykzgeolwysfidemflmkwmj

找到了一堆字符,把这些字符替换页面的 url 发现失败了,再想下上面的匹配规则是不是有问题?

按照上面的规则,如果字符串中含有类似 AAAAaAAA,这样的也会被匹配出来。

再回头看下提示信息,有个单词 EXACTLY 还特意大写了,意思是要 恰好每边 3 个大写字符,所以需要修改匹配规则,修改成类似 aAAAaAAAa,这样就能保证中间的字符每边恰好有 3 个大写字符。

#!/usr/bin/env/ python3

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

补充

打开 http://www.pythonchallenge.com/pc/def/linkedlist.html 发现页面上出现了一个 linkedlist.php

提示我们新的 url 应该是 http://www.pythonchallenge.com/pc/def/linkedlist.php

参考资源:

  1. re 官方文档
  2. re 参考
  3. 正则表达式30分钟入门教程

转载于:https://my.oschina.net/jianggushi/blog/2963344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值