Можно ли изменить последний символ в повторении регулярного выражения? - PullRequest
0 голосов
/ 13 февраля 2020

Мне нужно включить пробел между каждым повторением строки, который работает нормально, используя )-- )+ в конце регулярного выражения, но мне нужно удалить пробел для последней введенной строки. Используя следующее регулярное выражение, пробел обязателен для всех строк, включая последнюю, что не обязательно.

Как избежать пробела, являющегося обязательным для последней повторяющейся строки?

Это мое регулярное выражение:

"(?:sv(?:32i|32e)(?:a|m|c|)-(?:32f|32e)(?:a|b|)-- )+"

1 Ответ

0 голосов
/ 13 февраля 2020

Вы можете сопоставить первую часть sv32[ie][amc]-32[ef][ab]-- без завершающего пробела и повторить сопоставление с тем же шаблоном, которому предшествует пробел в группе без захвата (?: ..)*, или использовать + для повторения 1 или более раз.

Шаблон может быть немного упрощен с использованием классов символов вместо групп без захвата.

sv32[ie][amc]-?32[ef][ab]--(?: sv32[ie][amc]-?32[ef][ab]--)*

Демонстрация регулярных выражений

Примечание , что если вы хотите сопоставить sv32ia-32ea-- sv32ia32ea-- sv32ia-32ea-- sv32ia32ea--, вы можете сделать необязательный необязательный, используя -?32

. Вы также можете сделать необязательный пробел, используя -- ?)+, если вы разрешите использовать конечный пробел.

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