python3:正则表达式组1,意外结果

时间:2018-09-21 15:24:55

标签: python regex python-3.x

我正在尝试寻找一种模式,并在python3中捕获它。由于某些原因,re.search('(NM_\d+)[^.]', 'NM_000051.3').group(1)无法返回我期望的结果。结果是“ NM_00005”而不是“ NM_000051”。有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:0)

您将.字符与[^.]取反,以便它与1匹配。您只需对其进行否定即可使您的小组在此之前停止。

>>> re.search('(NM_\d+)[.]', 'NM_000051.3').group(1)
'NM_000051'

相同
>>> re.search('(NM_\d+)\.', 'NM_000051.3').group(1)

但是毕竟为什么不让它匹配直到找不到数字?

re.search('(NM_\d+)', 'NM_000051.3').group(1)