Как установить количество совпадений конкретных символов до его остановки? - PullRequest
1 голос
/ 11 апреля 2019

Я пытаюсь узнать больше о регулярных выражениях и хочу понять, как выбрать количество символов, которые regex будет искать, прежде чем оно прекратит совпадать? например:

У меня есть следующая строка:

>first)second)third)fourth)

Если я установлю регулярное выражение как,

>.*\)

он пройдет весь путь от ">" до последнего ")", если я сделаю его не жадным,

>.*?\)

остановится на первом ")"

но как мне заставить регулярное выражение остановиться на втором или третьем ")"?

Я пробовал что-то вроде,

>.*\).*\)

но он просто доходит до конца, как мне выбрать, где остановиться?

заранее благодарю за ответы)

1 Ответ

0 голосов
/ 11 апреля 2019

Вы можете просто использовать следующее регулярное выражение для сопоставления 1-го, 2-го, 3-го и 4-го, n-го вхождений:

^>(?:[^)]*\))
^>(?:[^)]*\)){2}
^>(?:[^)]*\)){3}
^>(?:[^)]*\)){4}
^>(?:[^)]*\))*$

демо : https://regex101.com/r/ZEzYtM/2

Вы можете просто построить это регулярное выражение динамически, чтобы соответствовать i-му вхождению.

...