Java Regex: почему захватывается группа без захвата? - PullRequest
0 голосов
/ 03 октября 2018

Я использую это регулярное выражение в Java:

^(Mon(?:.?|day)?)(?:[\.,])?$ (это можно проверить здесь )

Я хочу записать день, за которым следует необязательный . или ,.В случае дня понедельника я хочу захватить либо Monday, либо Mon.Однако я не хочу, чтобы дополнительные . или , были сохранены в группе захвата.Кажется, это работает только для «понедельника», а не для «понедельника».(см. ссылку).

Как мне этого добиться?

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете использовать

^(Mon(?:day)?)[.,]?$

См. Демоверсию regex

Подробности

  • ^- начало строки (пропустите, если вы используете .matches())
  • (Mon(?:day)?) - Группа захвата 1:
    • Mon - литеральная подстрока
    • (?:day)? -необязательная day последовательность символов
  • [.,]? - необязательная точка или запятая
  • $ - конец строки (пропустите, если вы используете .matches())
...