首页 > 解决方案 > python3:正则表达式组 1,意外结果

问题描述

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

标签: pythonregexpython-3.x

解决方案


你否定这个.字符,[^.]所以它匹配得很好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)

推荐阅读