正则表达式中的圆括号有什么区别?

时间:2018-12-23 03:33:57

标签: python regex

我目前正在浏览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]周围有一个括号,我不知道它有什么区别。我想对此进行一些解释。

1 个答案:

答案 0 :(得分:0)

  

使用括号进行分组和捕获,方法是放置括号的一部分   圆括号或括号内的正则表达式,可以分组   正则表达式的那一部分。这使您可以申请   整个组的量词,或将替换限定为一部分   正则表达式。

https://www.regular-expressions.info/brackets.html

基本上,正则表达式引擎可以找到与整个搜索模式匹配的字符串列表,并向您返回()中的部分。