Regex et l'opérateur OR sans regroupement en Python?
Voici le cas. Je suis à la recherche pour le motif suivant dans un fichier journal.
Toutes les chaînes sont en forme de AB_N
ou CDE_N
.
AB
et CDE
sont fixes lettres, suivi par un trait de soulignement.
N
peut être 2 ou 3 chiffres.
J'ai essayé (AB|CDE)_\d{2,3}
mais qui renvoie à un groupe. Je ne peux pas faire \w{2,3}\d{2,3}
parce qu'il doit être AB
ou CDE
et pas AC
ou FEG
. Omettre les parenthèses casse trop. Je suis sûr que la solution est simple, mais je suis nouveau sur python et regex et ne peut pas comprendre cela.
source d'informationauteur pedram
Vous devez vous connecter pour publier un commentaire.
Un
?:
à l'intérieur d'une parenthèse dans une regex rend non-capture. Comme:(?:AB|CDE)_\d{2,3}
Voir docs ici: http://docs.python.org/3/library/re.html
Environ un tiers du chemin à travers elle va sur la non-capture de la syntaxe.
La non-capture d'un groupe de syntaxe est
(?:...)
. Donc, ne(?:AB|CDE)_\d{2,3}
. C'est documenté avec tout le reste.