Я пытался заставить это работать большую часть дня.
На данный момент я даже не могу вспомнить, что я пробовал и что я не пробовал, так что теперь я прошу помощи!
Я собираюсь использовать PHP preg_replace()
удалить строфы из кода SVG.
Но проблема, с которой я сталкиваюсь, может быть показана на этом гораздо более простом примере:
<div>
TRUE
</div>
<div>
FALSE
</div>
<div>
MAYBE
</div>
Как мне сопоставить средний div?
Простая версия моего регулярного выражения
(?s)<div.*?FALSE.*?<\/div>
Это не работает, так как он будет соответствовать первым 2 дивам, а не только среднему.
(он все еще называется жадным, когда расширяет совпадение влево?)
Все варианты, которые я пробовал, ни к чему не привели.
Я уверен, что есть простой ответ, я просто не мог найти его самостоятельно.
Хорошо, конечно, я нашел решение вскоре после того, как опубликовал вопрос.
В основном оригинальное регулярное выражение началось с
<div.*?
И правильный ответ должен был заменить это .
с
(?:.(?!<div))
Который является группой без захвата, используя .
с негативным прогнозом <div
Так как ни упущение, ни упущение не могут быть частью матча …. Это означает: соответствовать «Все», кроме <div
Других решений пока нет …