Мне нужно получить контент между двумя директивами (embed
и endembed
) с использованием RegEx. Мой текущий шаблон делает это правильно /(?<!\w)(\s*)@embed(\s*\(.*\))([\w\W]*?)@endembed/g
.Содержимое рекурсивного кода кода Regex
Однако, когда директивы вложены, они не соответствуют блокам правильно. https://regex101.com/r/nL8gV5/2,
@extends('layouts/default')
@section('content')
<div class="row">
<div class="col-md-6">
@embed('components/box')
@section('title', 'Box title')
@section('content')
<h4>Haai</h4>
Box content
@stop
@endembed
</div>
<div class="col-md-6">
@embed('components/box')
@section('title', 'Box2 title')
@section('content')
@embed('components/timeline')
@section('items')
@stop
@endembed
@stop
@endembed
</div>
</div>
@stop
Желаемый результат:
1:
@section('title', 'Box title')
@section('content')
<h4>Haai</h4>
Box content
@stop
2:
@section('title', 'Box2 title')
@section('content')
@embed('components/timeline')
@section('items')
@stop
@endembed
@stop
3:
@section('items')
@stop
Я пробовал различные модели, но я не могу показаться, чтобы получить это право. Насколько я понимаю, я должен использовать рекурсивный токен (R?)
в сочетании с обратной ссылкой? что-то более подобное https://regex101.com/r/nL8gV5/3. Проведя несколько часов возиться, я до сих пор не работал.
Что я делаю неправильно и что такое правильный шаблон?
звуков, как это можно было бы сделать гораздо проще, без регулярных выражений, или скажет, с помощью регулярных выражений только найти начальные и конечные тег , любая причина, по которой вы хотите сделать все это в регулярном выражении? – hoijui
Насколько я понимаю, нет регулярного выражения для вложенных круглых скобок.Вы можете использовать более сложный код с последовательной заменой скобок на любой символ, в то время как скобки все еще находятся в строке. – splash58