我目前正在浏览pythonchallenge.com,现在尝试创建一个代码来搜索一个小写字母,该字母的正反两面都有三个大写字母。然后我被困在尝试为其做一个正则表达式。这是我尝试过的:
import re
#text is in https://pastebin.com/pAFrenWN since it is too long
p = re.compile("[^A-Z]+[A-Z]{3}[a-z][A-Z]{3}[^A-Z]+")
print("".join(p.findall(text)))
这就是我得到的: dqIQNlQSLidbzeOEKiVEYjxwaZADnMCZqewaebZUTkLYNgouCNDeHSBjgsgnkOIXdKBFhdXJVlGZVme gZAGiLQZxjvCJAsACFlgfe qKWGtIDCjn
我后来搜索了具有以下正则表达式的解决方案:
p = re.compile("[^A-Z]+[A-Z]{3}([a-z])[A-Z]{3}[^A-Z]+")
所以[a-z]周围有一个括号,我不知道它有什么区别。我想对此进行一些解释。
答案 0 :(得分:0)
使用括号进行分组和捕获,方法是放置括号的一部分 圆括号或括号内的正则表达式,可以分组 正则表达式的那一部分。这使您可以申请 整个组的量词,或将替换限定为一部分 正则表达式。
https://www.regular-expressions.info/brackets.html
基本上,正则表达式引擎可以找到与整个搜索模式匹配的字符串列表,并向您返回()中的部分。