2010-09-09 5 views
0

a + (ab or cd) + g est mon expression. Comment puis-je écrire une regex en Python pour les faire correspondre?Écrire une regex pour un motif?

+4

Je ne comprends pas l'expression que vous voulez. Suggérez-vous d'étendre le message pour donner quelques exemples de lignes de texte, certaines qui correspondent à ce que vous voulez. Ensuite, nous pouvons voir clairement ce que vous essayez de faire correspondre. – djna

+0

Pourriez-vous être plus précis? Cherchez-vous simplement à concaténer 'a' et 'ab' ou' cd' et 'e' une fois ou avez-vous besoin de cela d'une manière récursive? – ubiquibacon

Répondre

0

Pour rechercher cette regex dans une chaîne, par exemple

re.search("a\\+((ab)|(cd))\\+g", your_string) 

Pour extraire matches, utiliser re.findall etc. Pas besoin de copier coller & the docs ici. :)

EDIT: Mis à jour après la modification de l'expression rationnelle par OP.

Si vous voulez faire correspondre les espaces entre les deux, les choses deviennent assez laid ...

re.search("a\W*\\+\W*((ab)|(cd))\W*\\+\W*g", your_string) 
+0

Juste pour s'assurer que tout est clair, le '+' a une signification particulière dans les expressions régulières. Donc, si vous voulez littéralement faire correspondre le caractère '+ 'lui-même, vous devez lui échapper:' "(a \\ + b) | (cd \\ + e)" ' – MatrixFrog

+0

Bien sûr. Je supposais que le PO avait cela en tête. –

+0

@MatrixFrog: Ok ... après son dernier montage, je comprends qu'il cherchait littéralement "+". –

Questions connexes