python 正则表达式意外匹配组

python regex unexpected match groups

我正在尝试使用正则表达式 ((_\^)[1-9])

查找所有出现的 "_"+digit"^"+digit

我期望返回的组例如 "X_2ZZZY^5" 将是 [('_2'), ('^5')] 但我得到的是 [('_2', '_'), ('^5', '^')]

我的正则表达式不正确吗?还是我对返回内容的期望不正确?

非常感谢

** 我原来的重新使用 (_|\^) 这是不正确的,应该是 (_\^) -- 问题已相应修改

要求在特殊字符 _^ 后至少有 1 个数字 (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']

您的正则表达式中有 2 个组 - 所以您得到 2 个组。并且您至少需要匹配后面的1个数字。

试试这个:

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

查看实际效果 here