Я пытаюсь найти шаблон и поймать его в python3. По какой-то причине re.search('(NM_\d+)[^.]', 'NM_000051.3').group(1)
не возвращает то, что я ожидаю. Результатом является "NM_00005" вместо "NM_000051". Может кто-нибудь объяснить, почему?
вы отрицаете .
символ с [^.]
чтобы он соответствовал 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)
re.search('(NM_\d+)[.]', 'NM_000051.3').group(1)