gpt4 book ai didi

python - 重复多个字符正则表达式

转载 作者:IT老高 更新时间:2023-10-28 20:50:36 25 4
gpt4 key购买 nike

有没有办法使用正则表达式来匹配一组重复的字符?例如:

ABCABCABCABCABC

ABC{5}

我知道那是错误的。但是有什么可以匹配这种效果的吗?

更新:

您可以使用嵌套捕获组吗?所以像 (?<cap>(ABC){5}) ?

最佳答案

将要重复的正则表达式括在括号中。例如,如果你想要 ABC 5 次重复:

(ABC){5}

或者,如果您想要任意数量的重复(0 或更多):

(ABC)*

或一次或多次重复:

(ABC)+

编辑以响应更新

正则表达式中的括号有两个作用;它们将正则表达式中的一系列项目组合在一起,以便您可以将运算符应用于整个序列而不仅仅是最后一个项目,并且它们捕获该组的内容,以便您可以提取与该子表达式匹配的子字符串在正则表达式中。

你可以嵌套括号;它们从第一个开头的括号开始计算。例如:

>>> re.search('[0-9]* (ABC(...))', '123 ABCDEF 456').group(0)
'123 ABCDEF'
>>> re.search('[0-9]* (ABC(...))', '123 ABCDEF 456').group(1)
'ABCDEF'
>>> re.search('[0-9]* (ABC(...))', '123 ABCDEF 456').group(2)
'DEF'

如果您想在分组时避免捕获,您可以使用 (?:。如果您不想使用括号来组合一个序列,用于应用运算符来更改匹配的编号。它也更快。

>>> re.search('[0-9]* (?:ABC(...))', '123 ABCDEF 456').group(1)
'DEF'

所以要回答您的更新,是的,您可以使用嵌套捕获组,甚至完全避免使用内部组进行捕获:

>>> re.search('((?:ABC){5})(DEF)', 'ABCABCABCABCABCDEF').group(1)
'ABCABCABCABCABC'
>>> re.search('((?:ABC){5})(DEF)', 'ABCABCABCABCABCDEF').group(2)
'DEF'

关于python - 重复多个字符正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com