У меня есть код регулярного выражения:
<!--\s?BEGIN (\w+) \s?-->(.*?)<!--\s?END \w+\s?-->
Что будет соответствовать
<!-- BEGIN some_functional_name --> //some stuff here later <!-- BEGIN some_functional_name -->
Мне нужно следить за вложенными комментариями и если имена совпадают. Например
<!-- BEGIN some_functional_name --> //some stuff here later <!-- BEGIN another_functional_name --> //it'll match up to the below end another_functional_name <!-- END another_functional_name --> <!-- END some_functional_name -->
Поскольку вы можете видеть, что оно вложенное, но в регулярном выражении будет записан второй последний комментарий END
который BEGIN
и END
не совпадают. Есть ли способ получить встроенные группы захвата регулярных выражений?
Пример:
<!--\s?BEGIN (\w+) \s?-->(.*?)<!--\s?END $1\s?-->
Хотя я также не знаю, как обращаться с гнездом? Должен ли я использовать положительный отзыв или что?
Вы должны использовать обратную ссылку , например '\ 1'.
<!--\s?BEGIN (\w+) \s?-->(.*?)<!--\s?END \1\s?-->
Вот пример .