Названия совпадений, объединенные с разделителем, кроме последнего - PullRequest
0 голосов
/ 10 июля 2019

Предположим, у нас есть в текстовом файле много строк, в каждой из которых есть несколько имен, соединенных с ";" разделитель, кроме фамилии (которая на этом не заканчивается). Мы можем использовать следующее регулярное выражение:

^(\w+;)+$  // Not good

Предыдущее регулярное выражение не будет работать, потому что оно заставляет фамилию, поэтому весь ряд заканчивается символом ";" также

1 Ответ

2 голосов
/ 10 июля 2019

Вы можете добавить соответствующий одиночный \w+ после него.Если вам не нужна группа захвата, вы можете сделать это без захвата.

Таким образом, вы повторяете совпадающие символы слова, после которых следует ; и заканчиваете совпадение символами слова.

^(?:\w+;)+\w+$

Объяснение

  • ^ Начало строки
  • (?: Группа без захвата
    • \w+; Совпадение с 1 + символами слова, за которыми следуют ;
  • )+ Закрыть группу без захвата и повторить 1+ раз
  • \w+ Совпадение с 1 + символами слова
  • $ Конец строки

Regex demo

Если одно слово также должно совпадать, вы можете повторить группу 0+ раз, используя * вместо +

^(?:\w+;)*\w+$

Regex demo

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