У меня есть скрипт PHP, и мне нужно соответствовать последнему вхождению определенной строки.
Допустим, у меня есть следующие сценарии:
1
<p class="TPTexto" style="text-autospace: none; ">
<font face="Arial" size="2" color="#FF0000">Este texto não substitui o publicado no DOU de 28.9.2006.</font>
</p>
2
Este texto abc def
<p class="TPTexto" style="text-autospace: none; ">
<font face="Arial" size="2" color="#FF0000">Este texto não substitui o publicado no DOU de 28.9.2006.</font>
</p>
3
Este texto abc def
<p class="TPTexto" style="text-autospace: none; ">
<font face="Arial" size="2" color="#FF0000">Este
texto não substitui o publicado no DOU de 28.9.2006.</font>
</p>
4
Este texto abc def
<p class="TPTexto" style="text-autospace: none; ">
<font face="Arial" size="2" color="#FF0000">Este <font></font>
texto não substitui o publicado no DOU de 28.9.2006.</font>
</p>
5
Este texto abc def
<p class="TPTexto" style="text-autospace: none; ">
<font face="Arial" size="2" color="#FF0000">Este texto não substitui o publicado no DOU de 28.9.2006.</font>
</p>
Я хочу совпадать с Este texto não substitui o publicado
во всех случаях, принимая временные помехи, например Este <font></font>\ntexto não substitui o publicado
.
Итак, я пошел со следующим регулярным выражением:
/Este(?:.(?!Este))+?texto.+?n.+?o.+?substitui.+?o.+?publicado/uis
Флаги:
u
для приема символов Юникода
i
принять нечувствительный контент
s
чтобы точка (.
) соответствовала символам новой строки (так что мой негативный взгляд работает)
Таким образом, я будет соответствовать последнему Este
и следующему тексту, как я хочу, верно? Нету! Модификатор s
убивает его.
(я использую этот инструмент PHP , чтобы проверить его кстати)
Я не знаю, почему модификатор s
убивает его в этом случае. Любая помощь будет принята с благодарностью.
Я использую PHP preg_match_all
в этом проекте.
Редактировать
Заметил, что не ясно: мне нужен ВТОРОЙ Este texto...
не первый.