Python正则表达式返回错误的组

时间:2017-11-03 07:19:02

标签: python regex python-2.7

我在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,它找到了没有下划线的正确组。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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