J'ai besoin d'une expression régulière qui correspond A.*C
seulement s'il n'y a pas de "B" entre les deux. Avant et après "A.*C
sans B entre", toute chaîne est autorisée (y compris A, B et C).
"A", "B" et "C" sont des espaces réservés pour des chaînes plus longues.
Donc l'expression rationnelle devrait correspondre ie. "AfooC", "AfooCbarB", "A C B A", mais pas "AfooBbarC" ou "A B C B".Problème d'expression régulière: comment déterminer qu'il n'y a pas de B entre A et C?
Je pense que je besoin d'un .*
quelque part entre A et B, alors j'ai essayé (entre autres) ces deux:
A.*(?!B).*C
ne fonctionne pas, comme .*
après un « mange » B.
A(?!.*B).*C
n » t fonctionne, car il ne correspond pas ACB
. (Cette fois, le premier .*
"mange" le "C").
Peut-être qu'il me manque quelque chose d'évident - je n'arrive pas à comprendre comment le faire.
Merci pour l'aide, Julian
(Edit: ayant des problèmes de mise en forme ...)
La réponse à votre question peut dépendre de la syntaxe regex utilisée. Quelqu'un a demandé la même chose pour les expressions rationnelles .NET [ici] (http://bytes.com/topic/net/answers/103977-regular-expression-match-all-except). – stakx
Le problème est que A, B, C ne sont pas des caractères uniques. – jasamer