2011-01-12 3 views
3

Я хотел бы найти лучший матч с данной группой регулярного выражения. Пример:Найти лучший матч от группы захвата regex

Regex: (AB | ABC)

Пример: ABCDEF

Результат: AB

Но я хотел бы найти ABC (наиболее подходящий из опционного списка) ,

Как это можно сделать? (за исключением замены обеих альтернатив в группе)?

Спасибо за любую идею!

+0

Я сомневаюсь, что вы можете сделать такую ​​вещь. –

ответ

3

Попробуйте указать наилучшие совпадения в порядке (например, самые длинные строки). Многие двигатели RE предпочитают сначала левые в режиме «нетерпеливой оценки». Только POSIX Реза мандат, что самое длинные соответствующие альтернативные возвращаются:

http://www.regular-expressions.info/alternation.html

+2

Хороший совет, +1. Я хотел бы добавить, что я предпочитаю поведение движков regex, отличных от POSIX, потому что это позволяет мне определить, что я считаю «лучшим», - он не всегда должен быть самым длинным. Размер не ... вы знаете ... –

+0

;-) Да, вы правы. Я сделаю поиск наилучших результатов через заказ в группе захвата. – Sascha

Смежные вопросы