регулярное выражение для соответствия необязательной группе - PullRequest
1 голос
/ 12 марта 2020

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

Регулярное выражение:

^[A-Z]{1,4}-[0-9]{1,4}:\s(\w*)\((\w*)\)*:\s(.*)$

Соответствует следующему:

AAAA-1235: fix(test): message 

Однако не ниже.

AAAA-1235: fix: message 

Как изменить регулярное выражение так, чтобы оно соответствовало обеим группам. И в случае первого сообщения получим три группы.

  • Исправление
  • тест
  • Сообщение

А в случае второго сообщения только две группы

  • Fix
  • Сообщение

Сообщение

1 Ответ

0 голосов
/ 12 марта 2020

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

Кроме того, чтобы сделать что-то необязательное, используйте ?. * означает разрешить любое количество повторений, включая 0.

^[A-Z]{1,4}-[0-9]{1,4}:\s(\w*)(\(\w*\))?:\s(.*)$

DEMO

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