Php регулярное выражение, пытаясь исключить матч в другом матче

У меня есть это регулярное выражение для сканирования каждого цикла в моих представлениях, оно почти делает то, что я хочу, но не полностью. Я использую это регулярное выражение atm:

(?=({{each\s+([^{}]*)}}((?>(?!{{#?each).|(?1))*){{#each}}))

Когда у меня есть каждый цикл внутри другого каждого цикла, он показывает совпадения правильно, но я не хочу, чтобы каждый цикл был внутренним. Я планирую обработать этот второй матч рекурсивно. Вот пример HTML:

<div class="rows-container">
{{each infoItems}}
<div class="row">
<div class="row-key"></div>
</div>

<div class="sub-container">
{{each subItems}}
<div class="row">
<div class="row-key"></div>
</div>
{{#each}}
</div>
{{#each}}
</div>

<div class="rows-container">
{{each newsItems}}
<div class="row">
<div class="row-key"></div>
</div>
{{#each}}
</div>

Будет давать следующие результаты:

//MATCH 1:
1. {{each infoItems}} <div class="row"> <div class="row-key"></div> </div> <div class="sub-container"> {{each subItems}} <div class="row flex-wrap"> <div class="row-key"></div> </div> {{#each}} </div> {{#each}}
2. infoItems
3. <div class="row"> <div class="row-key"></div> </div> <div class="sub-container"> {{each subItems}} <div class="row flex-wrap"> <div class="row-key"></div> </div> {{#each}} </div>//MATCH 2:
//This is the match I was trying to exclude:
4. {{each subItems}} <div class="row flex-wrap"> <div class="row-key"></div> </div> {{#each}}
5. subItems
6. <div class="row flex-wrap"> <div class="row-key"></div> </div>

//MATCH 3:
7. {{each newsItems}} <div class="row"> <div class="row-key"></div> </div> {{#each}}
8. newsItems
9. <div class="row"> <div class="row-key"></div> </div>

Как видите, все, что мне нужно, это: полный результат (который полезен для обратного вызова замены), имя массива, & содержимое. Я пытался озадачить регулярным выражением,

{{each\s+([^{}]*)}}((?>(?!{{#?each).|(?1))*){{#each}}

Это даст только 2-й & третий, но не первый = ‘(я начинаю думать, что я слишком занят с регулярными выражениями этого комплекса, теряя понимание их … но мне нравится подталкивать вещи.

Есть ли способ захватить 1-й и 3-й матч? с разрешением внутри каждого другого цикла (только 1 внутри требуется .. на данный момент), но не сопоставляя их.
Небольшое объяснение или обратная связь будут очень благодарны, но у меня есть немного времени, и меня ждет головоломка.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]