Regex для получения строки между тегами html: остановка выбора при первом совпадении закрывающего тега - PullRequest
0 голосов
/ 29 марта 2020

Я хочу получить html между тегами ul. Это похоже на следующее:

<nav id="navi_list_box" class="local_nav favorite">
  <ul id="navi_list">
    <li class="active"><a href="http://localhost/mypage">Foo</a></li>
    <li class=""><a href="http://localhost/mypage/favorite">Bar</a></li>
    <li class=""><a href="http://localhost/mypage/change">Baz</a></li>
  </ul>
  <ul>
    <li>Just to make sure this won't be selected</li>
  </ul>
</nav>

Я хочу получить html из ul#navi_list.

Это то, что я сделал до сих пор:

<ul[^>]*id(\s)*=('|")navi_list(\s)*('|")>(\n|\r|(\n\r)|.)*(</ul>)

Он выбирает html из #navi_list, а также html из второго тега ul.

Как я могу остановить выбор перед вторым тегом ul?

1 Ответ

0 голосов
/ 29 марта 2020

Я нашел решение.

<ul[^>]*id(\s)*=('|")navi_list(\s)*('|")>((.|\n|\r|(\n\r))*?)</ul>

Следующее регулярное выражение выберет все html между тегом и его закрывающим аналогом.

<TAG\b[^>]*>((.|\n|\r|(\n\r))*?)</TAG>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...