深度解密 python challenge第3关之 正则表达式

本文通过Python正则表达式解决一个特定的字符串提取挑战,初始正则未能精确匹配目标,经调整后成功提取了所有符合条件的小写字母。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关卡介绍:

操作步骤

废话就不多说了。直接就是将源码的注释部分 copy到项目中,然后继续读取出来。看看又有什么怪异的部分! 

从图中我们可以得到这样的提示。 One small letter ,surrounded by EXACTLY three big bodyguards on each of its sides   什么意思呢。就是3个大写字母中间夹一个小写字母再加3个大写字母。(想到什么必须是正则!!)

直接上代码:

# -*- coding:utf-8 -*-
# **********************************
# ** http://weibo.com/lixiaodaoaaa #
# ** create at 2017/6/13   19:28 ***
# ****** by:lixiaodaoaaa ***********

import re

myUrl = "http://www.pythonchallenge.com/pc/def/equality.html"
myReText = file("re.txt").read()

myPattern = r"[^A-Z][A-Z]{3}[a-z][A-Z]{3}[^A-Z]"

##圆括号的内容   应该用()括起来 直接运行 OKKK
# 为什么 括起来呢?因为 要取到这个匹配的中间字符 关键字

skipSubjectName = "".join(re.findall(myPattern, myReText))

print  skipSubjectName

运行的结果:

 qIQNlQSLieOEKiVEYjaZADnMCZqbZUTkLYNguCNDeHSBjkOIXdKBFhdXJVlGZVmgZAGiLQZxvCJAsACFlqKWGtIDCj

沉思

好像有点问题。  我们应该只需取到小写的中间字母即可,为何这样垃圾的代码?! 对。我们更改下关键匹配的正则表达式:把:
myPattern = r"[^A-Z][A-Z]{3}[a-z][A-Z]{3}[^A-Z]" 
更改为:myPattern =  r"[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]" 表示把中间的小写字母匹配到的结果返回出来。

修正后的代码

# -*- coding:utf-8 -*-
# **********************************
# ** http://weibo.com/lixiaodaoaaa #
# ** create at 2017/6/13   19:28 ***
# ****** by:lixiaodaoaaa ***********

import re

myUrl = "http://www.pythonchallenge.com/pc/def/equality.html"
myReText = file("re.txt").read()

myPattern = r"[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]"

##圆括号的内容   应该用()括起来 直接运行 OKKK
# 为什么 括起来呢?因为 要取到这个匹配的中间字符 关键字

skipSubjectName = "".join(re.findall(myPattern, myReText))

print  skipSubjectName

最后需要跳转的页面实际上是:http://www.pythonchallenge.com/pc/def/linkedlist.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值