【问题标题】:Python regex returns incorrect group [duplicate]Python正则表达式返回不正确的组[重复]
【发布时间】:2026-01-08 00:35:01
【问题描述】:

我在python中有以下问题:

searchstring = "([A-Z0-9]*)_"
basename = "AK4RAE00005_ALL_MEASUREMENT.a2l"
m = re.search(searchstring, basename)
if m and m.group(0):
  print m.group(0)

我预计结果是:AK4RAE00005,但结果却是 AK4RAE00005_ 我在https://regexr.com/ 上检查了我的RegEx,它找到了没有下划线的正确组。

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    试试 m.group(1)

    m.group(0) 匹配整个字符串。

    searchstring = "([A-Z0-9]*)_"
    basename = "AK4RAE00005_ALL_MEASUREMENT.a2l"
    m = re.search(searchstring, basename)
    if m:
        print m.group(1)
    

    【讨论】:

    • 就这么简单。谢谢
    【解决方案2】:

    显示的结果是正确的,但混淆是可以理解的。正如预期的那样,实际组内容从 1.m.group(1) == 'AK4RAE00005' 开始索引。零组是整个匹配,捕获组和所有,这是'AK4RAE00005_',因为您的模式包含下划线。

    【讨论】: