如何在正则表达式中使用OR

时间:2014-08-09 21:03:53

标签: python regex

我有一些字符串,如“abc”,“def”,“xyz”,它们后面可能跟着数字。 例如: abc123或xyz92

如果我使用:

re.findall("abc|def|xyz[0-9]+",text)

然后它只返回xyz后跟数字,其余的我只得到字符串。

如何在不手动操作的情况下匹配所有这些内容,如:

re.findall("abc[0-9]+|def[0-9]+|xyz[0-9]+",text)

1 个答案:

答案 0 :(得分:8)

使用括号和?:来创建非捕获组:

(?:abc|def|xyz)[0-9]+

Regular expression visualization

Debuggex Demo

此外,如果您的字符串可能没有数字后跟,则应使用*(0或更多),而不是+(1或更多)。这种方式abcabc123都匹配:

(?:abc|def|xyz)[0-9]*

Regular expression visualization

Debuggex Demo

这是你目前的正则表达式:

abc|def|xyz[0-9]+

Regular expression visualization

Debuggex Demo