Python 正则表达式:在(…)组后包含文本

Python 正则表达式:在(…)组后包含文本,python,regex,Python,Regex,我正在学习正则表达式。我需要匹配括号组中的内容,然后是我定义的一些模式。当我尝试使用正则表达式时(在Python中),它只返回它匹配的括号中的部分,而不返回它后面的模式。举例说明: import re s = "texttoignore_ABCABC12345_moretexttoignore" re.findall("(ABC)+\d+", s) 当我谈到括号组时,在上面的示例中,这是“(ABC)+”部分。我想让它在括号中寻找一个或多个重复的模式(在本例中为“ABC”),然后是后面的模式 问

我正在学习正则表达式。我需要匹配括号组中的内容,然后是我定义的一些模式。当我尝试使用正则表达式时(在Python中),它只返回它匹配的括号中的部分,而不返回它后面的模式。举例说明:

import re
s = "texttoignore_ABCABC12345_moretexttoignore"
re.findall("(ABC)+\d+", s)
当我谈到括号组时,在上面的示例中,这是“(ABC)+”部分。我想让它在括号中寻找一个或多个重复的模式(在本例中为“ABC”),然后是后面的模式

问题是:它不会在之后返回模式。(在本例中,它将返回'ABC',但我想要'ABCABC12345'或'ABC12345'或更好的'12345')

如何在返回值中包含括号后的零件?这是关于正则表达式还是特定于此Python方法

谢谢!
John

这里的“问题”是
re.findall

如果模式中存在一个或多个组,请返回 小组名单;这将是一个元组列表,如果模式 有多个组

这里有一些选择。使您的组不被捕获:

>>> re.findall("(?:ABC)+\d+", s)
['ABCABC12345']
或者使用
re.finditer

>>> [m.group(0) for m in re.finditer("(ABC)+\d+", s)]
['ABCABC12345']
如果您只想找到一次模式,那么@Jkdc的注释方法就可以了

>>> re.search("(ABC)+\d+", s).group()
'ABCABC12345'
这里的“问题”是
re.findall

如果模式中存在一个或多个组,请返回 小组名单;这将是一个元组列表,如果模式 有多个组

这里有一些选择。使您的组不被捕获:

>>> re.findall("(?:ABC)+\d+", s)
['ABCABC12345']
或者使用
re.finditer

>>> [m.group(0) for m in re.finditer("(ABC)+\d+", s)]
['ABCABC12345']
如果您只想找到一次模式,那么@Jkdc的注释方法就可以了

>>> re.search("(ABC)+\d+", s).group()
'ABCABC12345'

您也可以使用
re.search()
re.search(r“(ABC)+\d+”,s.group()
您也可以使用
re.search()
re.search(r“(ABC)+\d+”,s.group()