2009-03-22 6 views
3

J'ai une expression régulière qui correspond x OU et condition. Parfois, ces correspondances se chevauchent et je veux donner la préférence à l'une des conditions.Préférence à une correspondance dans Regex lorsque des correspondances chevauchantes existent?

Voici mon cas de test.

Regex:

X[^\w]*\>|\>[^\w]*X 

Entrée:

soupe> X> Alphabet
Alphabet Soup> X
X> Alphabet Soup

Correspondances:

Highlighted match results http://i.friendfeed.com/b55db94551503bf13d16f944fc56d9ff56676b4f

Le premier match de surbrillance (jaune) devrait être X> au lieu de > X mais je ne suis pas sûr de savoir comment donner la préférence à l'un des matchs donnés un chevauchement.

+0

Donc vous voulez faire correspondre "X>" à moins que ce soit à la fin de la ligne (auquel cas vous voulez faire correspondre "> X")? – strager

+0

non, je veux faire correspondre "X>" à tout moment et "> X" à tout moment et "X>" non. Cet exemple concerne vraiment la première ligne. –

Répondre

8

Cela devrait le faire:

X[^\w]*>|>[^\w]*X(?![^\w]*>) 

Un négatif look-ahead après l'alternative à faible priorité. Quand il trouve "> X", mais il y a un " >" après, il devrait être ignoré en faveur de "X >".

Questions connexes