在Python中,正则表达式的小括号 () 有多种用法。下面是一些常见的用法:
1、分组:可以使用小括号将表达式的一部分分组起来。例如,(ab)+ 表示匹配连续的 "ab" 字符串,而不是单独的 "a" 或 "b"。
(ab)+
xxxxxxxxxximport re txt = 'abbc abab'print(re.search(r'ab{2}', txt)) print(re.search(r'(ab){2}', txt))# 输出结果:# <re.Match object; span=(0, 3), match='abb'># <re.Match object; span=(5, 9), match='abab'>
xxxxxxxxxx
import re
txt = 'abbc abab'
print(re.search(r'ab{2}', txt))
print(re.search(r'(ab){2}', txt))
# 输出结果:
# <re.Match object; span=(0, 3), match='abb'>
# <re.Match object; span=(5, 9), match='abab'>
2、子表达式捕获:可以使用小括号捕获匹配的子表达式,并将其作为匹配结果的一部分返回。通过在小括号内添加一个编号或命名,可以在后续的代码中引用这些捕获的子表达式。例如,(a(b)) 可以捕获 "ab",并将 "ab" 作为一个捕获组返回。
(a(b))
xxxxxxxxxximport re txt = '打呵呵、打哼哼、打吭吭、打敌人'pattern = r'(打(?P<value>.)(?P=value))'print(re.findall(pattern, txt))# 输出结果:# [('打呵呵', '呵'), ('打哼哼', '哼'), ('打吭吭', '吭')]
txt = '打呵呵、打哼哼、打吭吭、打敌人'
pattern = r'(打(?P<value>.)(?P=value))'
print(re.findall(pattern, txt))
# [('打呵呵', '呵'), ('打哼哼', '哼'), ('打吭吭', '吭')]
3、非捕获组:如果你不需要捕获一个子表达式的匹配结果,可以使用非捕获组。在小括号内添加 ?: 来创建非捕获组。例如,(?:ab)+ 表示匹配连续的 "ab" 字符串,但不会捕获这些匹配结果 。
?:
(?:ab)+
正则表达式付费代写、咨询、答疑解惑,专业、快速、高效帮您解决正则表达式方面的各种问题,可定制各类软件应用程序。
正则学习工作必备在线工具合集
.
^
$
\d
\w
\s
\D
\W
\S
[abc]
[a-z]
[^abc]
aa|bb
?
*
+
{n}
{n,}
{m,n}
(
)
\1
(?:
(?=
(?!
在线客服QQ:543690914,备案号: 苏ICP备15037649号-32。东海县白塔埠镇佳诚电脑经营部版权所有。