Python正则表达式意外匹配组

时间:2020-07-11 16:26:18

标签: python regex-group re

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

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

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

非常感谢

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

2 个答案:

答案 0 :(得分:2)

放置在单个捕获组中的特殊字符_^后面至少需要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']

答案 1 :(得分:2)

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

尝试一下:

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

查看实际情况here

相关问题