Regex для захвата остальной части строки - PullRequest
2 голосов
/ 13 октября 2019

У меня есть регулярное выражение, которое захватывает следующее выражение

XPT 123A

Теперь мне нужно добавить «что-то» в мое регулярное выражение, чтобы захватить оставшуюся строку как группу

XPT 123A I AM VERY HAPPY

Итак, XPT будет группа 1, 123A группа 2 и I AM VERY HAPPY группа 3.

Вот мое регулярное выражение (также здесь http://regexr.com/4mocf):

^([A-Z]{2,4}).((?=\d)[a-zA-Z\d]{0,4})

РЕДАКТИРОВАТЬ: я не хочу называть свои группы (редактирование b / c некоторые люди думали, что это дублирование другого вопроса)

Ответы [ 2 ]

2 голосов
/ 13 октября 2019

Если предположить, что группа 3 необязательна, вы можете использовать

^([A-Z]{2,4}) (\d[a-zA-Z\d]{0,3})(?: (.*))?$
^([A-Z]{2,4})\s+(\d[a-zA-Z\d]{0,3})(?:\s+(.*))?$

. \s+ соответствует любым 1+ пробелам.

См. regex demo .

Подробности

  • ^ - начало строки
  • ([A-Z]{2,4}) - Группа 1: два, триили четыре заглавные буквы ASCII
  • \s+ - 1+ пробелы
  • (\d[a-zA-Z\d]{0,3}) - Группа 2: цифра, за которой следуют 0 или более буквенно-цифровых символов
  • (?:\s+(.*))? -необязательная группа без захвата, соответствующая 1 или 0 вхождениям:
    • \s+ - 1+ пробелов
    • (.*) - Группа 3: любые 0+ символов, кроме символов разрыва строки, столько, сколькопо возможности
  • $ - конец строки
0 голосов
/ 13 октября 2019

Просто добавьте следующий суффикс к своему регулярному выражению, чтобы захватить остаток строки:

(?<rest>.+)?$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...