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
我正在尝试使用正则表达式 ((_\^)[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