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

2024-10-04 05:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有字符串“pattern_9123213”、“pattern_B490329402”和“no matched string”
结果将是[('9123213',''),[('','490329402')]或[('','')] 我怎么才能只得到一个元素,比如['9123213']、['490329402']和['']。 谢谢您!在


Tags: no字符串re元素searchstringresultregex
2条回答

最简单的方法是使用r"(pattern_A|pattern_B:)(\d+)"作为regexp,然后获取第二个匹配组(re.search(regex,string).group(2))。这样做是因为您尝试获取的组在两边都是相同的模式(\d+)。一般来说,您必须使用多个regex来处理这种情况。在

在重新编译不返回列表。它返回已编译的正则表达式,其方法可用于对字符串进行操作。在

相关问题 更多 >