Regex начинаются и заканчиваются одной и той же строкой, а не одним и тем же символом
Я хочу создать регулярное выражение для получения:
<p class="MyClass">
<p> something 1 </p>
<p> something 2 </p>
<span> <span> // or more html tag here
something
</p>
something's here, not in any tag!
от:
<p class="MyClass">
<p> something 1 </p>
<p> something 2 </p>
<span> <span> // or more html tag here
something
</p>
something's here, not in any tag!
<p class="MyClass">
<p> another thing 1</p>
<p> another thing 2</p>
<p> another thing 3</p>
another thing
</p>
...
Я думаю, что я буду использовать регулярное выражение, чтобы соответствовать всем между <p class="MyClass">
и следующий. Таким образом, регулярное выражение /(<p class="MyClass">[\s\S]*)<p class="MyClass">/
Работай правильно в этом случае. Но это не работает, когда я хочу получить уведомление об этой странице http://daotao.dut.udn.vn/sv/G_Thongbao_LopHP.aspx. ДОМ такой странный?!
Извините за мой плохой английский.
1 ответ
Решение
Регулярное выражение должно быть
(<p class="MyClass">[\s\S]*?)(?=<p class="MyClass">|$)
[\s\S]*?
:*?
является ленивым квантификатором, так что он соответствует кратчайшему, по умолчанию - жадному (соответствует наибольшему).(?=<p class="MyClass">|$)
: lookhead, чтобы он не относился к спичке, а|$
чтобы получить также последний матч