Utiliser des ancres dans python regex pour obtenir une correspondance exacte
J'ai besoin de valider un numéro de version consistant en " v " plus positif de type int, et rien d'autre
par exemple, "v4", "v1004"
J'ai
import re
pattern = "\Av(?=\d+)\W"
m = re.match(pattern, "v303")
if m is None:
print "noMatch"
else:
print "match"
Mais cela ne fonctionne pas! Retrait de la \A et \W match pour v303 mais aussi le match pour la v30G, par exemple
Grâce
source d'informationauteur astrogirl
Vous devez vous connecter pour publier un commentaire.
Assez simple. Tout d'abord, mettre des ancres sur votre modèle:
Maintenant, nous allons mettre ensemble le modèle:
Cela devrait le faire.
Je pense que vous pouvez
\b
(limite de mot) plutôt que de\A
(début de la chaîne) et\W
(non caractère de mot), aussi, vous n'avez pas besoin d'utiliser d'anticipation (la(?=...)
).Essayer:
"\bv(\d+)"
si vous avez besoin pour capturer l'int"\bv\d+"
si vous ne le faites pas.Modifier: Vous voudrez probablement utiliser raw string syntaxe de Python regexes,
r"\bv\d+\b"
depuis"\b"
est un caractère de retour arrière dans une chaîne de caractères.Edit 2: Depuis
+
est "gourmand", pas de fuite\b
est nécessaire ou souhaité.Simplement utiliser
Ou fermée avec
^\bv\d+\b$
pour le match entièrement..