Предпочтение одному совпадению в регулярном выражении, если существуют перекрывающиеся совпадения? - PullRequest
3 голосов
/ 22 марта 2009

У меня есть регулярное выражение, которое соответствует условию x ИЛИ y . Иногда эти совпадения перекрываются, и я хочу отдать предпочтение одному из условий.

Вот мой тестовый пример.

Regex:

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

Введите:

Суп> X> Алфавит
Алфавитный суп> X
X> Алфавитный суп

Матчи:

Выделенные результаты матчей http://i.friendfeed.com/b55db94551503bf13d16f944fc56d9ff56676b4f

Первое выделенное совпадение (желтое) должно быть X> вместо > X , но я не уверен, как отдать предпочтение одному из совпадений при перекрытии.

1 Ответ

8 голосов
/ 22 марта 2009

Это должно сделать это:

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

Негативный прогноз после альтернативы с низким приоритетом. Когда он находит "> X", но после него стоит " >", его следует пропустить в пользу "X >".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...