Имеем строку:
<html><body><div>
<div>456</div>
<p>Привет, Мир!</p>
<div>456</div>
<p>Привет, Мир!</p>
</div></body></html>
Необходимо отсечь вот эту часть:
div></body></html>
Регулярное выражение:
'/div[\S\s]*?$/is'
Разбор регулярного выражения:
1. Устанавливаем флаги - регистронезависимый (i) и в одну строку (s) (так как искать будем с конца):
/is
2. Найти любые символы, до первого (с конца) слова
div
:
div[\S\s]*?$
...в итоге он выбирает всё до верхнего div... Почему? Ведь явное указание с не жадным оператором искать только до первого (с конца) div:
div[\S\s]*?$