JS RegEx: простое совпадение с дополнительными частями

Вопрос:

Я думаю, что на самом деле я не получаю материал RegEx, поэтому мне нужна помощь, соответствующая следующему простейшему шаблону:

SOME_TEXT _Syn: SYN_TEXT _Ant: ANT_TEXT

цитаты являются декоративными, X_TEXT — любой текст (который не содержит _Syn: или _Ant: это специальная аббревиатура), _Syn или _Ant являются необязательными

Мне нужно получить SOME_TEXT, SYN_TEXT и ANT_TEXT в массиве

Так, например, если часть _Syn не присутствует (результат SOME_TEXT _Ant: ANT_TEXT) должен быть [SOME_TEXT, '', ANT_TEXT]

Пробовал разные подходы с ленивыми модификаторами, но не смог его реализовать.

Лучший ответ:
/(.*?)(?:_Syn:(.*?))?(?:_Ant:(.*?))?$/

Важными частями являются ? после .* которые делают их неохотными (не жадные) и $ в конце, что заставляет матч, несмотря на все необязательные совпадения.

Ответ №1

Используйте это регулярное выражение

var n=str.match(/(SOME|SYN|ANT)_TEXT/g);

n будет содержать массив совпадающих строк

Оцените статью
TechArks.Ru
Добавить комментарий