Подтвердить что ты не робот

Использование якорей в regex python для получения точного соответствия

Мне нужно проверить номер версии, состоящий из "v" плюс положительный int, и ничего больше например, "v4", "v1004"

У меня

import re
pattern = "\Av(?=\d+)\W"

m = re.match(pattern, "v303")
if m is None:
    print "noMatch"
else:
    print "match"

Но это не сработает! Удаление \A и\W будет соответствовать для v303, но также будет соответствовать для v30G, например

Спасибо

4b9b3361

Ответ 1

Довольно просто. Сначала поставьте привязки на свой шаблон:

"^patternhere$"

Теперь сопоставьте шаблон:

"^v\d+$"

Это должно сделать это.

Ответ 2

Я думаю, вам может понадобиться \b (граница слова), а не \A (начало строки) и \W (символ без слова), также вам не нужно использовать lookahead ((?=...)).

Попробуйте: "\bv(\d+)\b", если вам нужно захватить int, "\bv\d+\b", если вы этого не сделаете.

Изменить. Вероятно, вы хотите использовать синтаксис сырой строки для регулярных выражений Python, r"\bv\d+\b", так как "\b" является символом обратного пространства в регулярной строке.

Ответ 3

Просто используйте

 \bv\d+\b

Или приложил его к ^\bv\d+\b$

чтобы полностью соответствовать ему.