正则表达式“或”只返回一个匹配项

时间:2012-09-28 17:41:56

标签: python regex

regex=re.compile(r"pattern_A(\d+)|pattern_B:(\d+)")
result=re.search(regex,string);

我有字符串“pattern_A9123213”和“pattern_B490329402”,以及“没有匹配的字符串”
结果将是[('9123213','')],[('','490329402')]或[('','')] 我怎样才能得到像['9123213'],['490329402']和['']这样的元素。 谢谢!

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用r"(pattern_A|pattern_B:)(\d+)"作为正则表达式,然后获取第二个匹配组(re.search(regex,string).group(2))。这是有效的,因为您尝试抓取的组在两侧都是相同的模式(\d+)。通常,您必须使用多个正则表达式来处理这种情况。

答案 1 :(得分:0)

re.compile不返回列表。它返回一个编译的正则表达式,其方法可用于对字符串进行操作。