我有一些字符串,如“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)
答案 0 :(得分:8)
使用括号和?:
来创建非捕获组:
(?:abc|def|xyz)[0-9]+
此外,如果您的字符串可能没有数字后跟,则应使用*
(0或更多),而不是+
(1或更多)。这种方式abc
和abc123
都匹配:
(?:abc|def|xyz)[0-9]*
这是你目前的正则表达式:
abc|def|xyz[0-9]+