代码之家  ›  专栏  ›  技术社区  ›  user908094

python正则表达式意外匹配组

  •  1
  • user908094  · 技术社区  · 5 年前

    我正在努力寻找这两种情况的所有发生 "_"+digit "^"+digit ,使用正则表达式 ((_\^)[1-9])

    我期待回来的团体(如 "X_2ZZZY^5" 会是 [('_2'), ('^5')] 但我却得到了 [('_2', '_'), ('^5', '^')]

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

    非常感谢

    **我的原稿被重新使用了 (_|\^) 这是不正确的,本应如此 (_\^) --问题已作相应修正

    1 回复  |  直到 5 年前
        1
  •  2
  •   rdas    5 年前

    你的正则表达式中有两个组,所以你得到了两个组。你需要至少匹配下面的1个数字。

    试试这个:

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

    看到它在行动吗 here

        2
  •  2
  •   Gustav Rasmussen    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']
    
    推荐文章