AlexeyGfi
@AlexeyGfi
YouTube >>> Битриксоид из Колхоза

Как отобрать в строке все пары тегов?

Подскажите, как мне из строки получить все пары тегов с текстом внутри?

Имеем например такую строку:
<b>Ключ <br> 1:</b>Значение 1<br><b>Ключ 2:</b>Значение 2<br><b>Ключ 3:</b>Значение 3<br><b>Ключ 4:</b>Значение 4<br>


Мне нужно достать изнутри все вхождения:
<b>Ключ <br> 1:</b>
<b>Ключ 2:</b>
<b>Ключ 3:</b>
<b>Ключ 4:</b>


Пробую такой паттерн:
<(a|p|b)>.*<\/\1>
...пробую такой:
<(a|p|b)>[^\1]+<\/\1>
... оно мне выцепляет от самого первого тега b до последнего.

Если расставлены разрывы строки — вот так:
<b>Ключ <br> 1:</b>Значение 1<br>
<b>Ключ 2:</b>Значение 2<br>
<b>Ключ 3:</b>Значение 3<br>
<b>Ключ 4:</b>Значение 4<br>

тогда паттерн <(a|p|b)>.*<\/\1> получает нужные пары, а если исходный текст сплошняком — нет.

Подскажите, как поступить?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 2
demon416nds
@demon416nds
Разработчик на чем попало
Жадность уберите
Ответ написан
Комментировать
lidacriss
@lidacriss
wtf
Пробую такой паттерн:
<(a|p|b)>.*<\/\1>
...пробую такой:
<(a|p|b)>[^\1]+<\/\1>
... оно мне выцепляет от самого первого тега b до последнего.

используйте "не жадные" кванторы
<code><(a|p|b)>.*?<\/\1></code>

https://regex101.com/r/XoLBxV/1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы