我正在学习正则表达式。我需要匹配括号组中的内容,然后是我定义的一些模式。当我用正则表达式(在Python中)尝试这个时,它只返回它匹配的括号中的部分,而不是它后面的模式。一个例子应该澄清:
R
当我说到括号组时,在上面的例子中,这是“(ABC)+”部分。我打算在括号中查找一个或多个重复的模式(在本例中为“ABC”),然后是模式。
问题在于:它之后不会返回模式。 (在这个例子中,它将返回'ABC',但我想要'ABCABC12345'或'ABC12345'或更好'12345')
如何在返回值中包括括号后面的部分?这是关于正则表达式的东西还是特定于这个Python方法?
谢谢!
约翰
答案 0 :(得分:4)
这里的“问题”是re.findall
如果模式中存在一个或多个组,则返回a 小组名单;如果模式,这将是一个元组列表 有不止一个小组。
这里有几个选项。要么让你的小组不被捕获:
>>> 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'