#python #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
Спасибо
Ответ №1:
Довольно просто. Сначала поместите якоря в свой шаблон:
"^patternhere$"
Теперь давайте соберем шаблон:
"^vd $"
Это должно сделать это.
Ответ №2:
Я думаю, вам может понадобиться b
(граница слова), а не A
(начало строки) и W
(не словесный символ), также вам не нужно использовать lookahead (the (?=...)
).
Попробуйте: "bv(d )"
если вам нужно захватить int, "bvd "
если вы этого не сделаете.
Редактировать: Вы, вероятно, хотите использовать необработанный строковый синтаксис для регулярных выражений Python, r"bvd b"
, поскольку "b"
это символ пробела в обычной строке.
Редактировать 2: поскольку
является «жадным», завершение не b
требуется или не требуется.
Ответ №3:
Просто используйте
bvd b
Или заключил его в ^bvd b$
чтобы полностью соответствовать ему..