Python正则表达式出现意外匹配组

3

我试图使用正则表达式((_\^)[1-9])查找所有出现的"_"+数字"^"+数字

我期望返回如"X_2ZZZY^5"中的[('_2'), ('^5')]组,但实际上我得到了[('_2', '_'), ('^5', '^')]组。

我的正则表达式是否有误?还是我对返回结果的期望有误?

非常感谢

** 我最初使用的re为(_|\^),这是错误的,应该是(_\^)——问题已相应修改


2
你有两组括号,因此你会得到两个组。 - thebjorn
2个回答

2

你的正则表达式中有2个组,因此你会得到2个组。你需要至少匹配1个后面跟着数字的字符。

试试这个:

([_\^][1-9]+)

这里看它的实际应用。


2
至少要求一个数字(1-9)跟在特殊字符_^之后,放在一个单独的捕获组内:
import re

text = "X_2ZZZY^5"
pattern = r"([_\^][1-9]{1,})"
regex = re.compile(pattern)
res = re.findall(regex, text)
print(res)

返回:

['_2', '^5']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接