我有一个这样的字符串:
<li class="level0 nav-2 last level-top parent">
<a href="#" class="level-top"><span>XYZ</span></a>
<ul class="level0">
<li class="level1 nav-2-1 first"><a href="#"><span>Farben</span></a></li>
<li class="level1 nav-2-2 last"><a href="#"><span>Muster</span></a></li>
</ul>
</li>现在我想匹配最后一个li,但前提是字符串中的某个位置显示为XYZ。我试过了
/<li class="level1 nav-(\d+)-(\d+) last">.+(<\/li>)/它会找到最后一个li,但是我想不出只有在它后面跟XYZ的情况下才能添加。我试过了
/.*XYZ.*<li class="level1 nav-(\d+)-(\d+) last">.+(<\/li>)/但这并不管用。
想法?谢谢:)
发布于 2012-11-29 23:51:13
如果要使用REGEX:
XYZ(.*\n( |\t)*.*)*<li class="level1 nav-(\d+)-(\d+) last">.+(<\/li>)你需要精确的"level1 nav-(\d+)-(\d+)“吗?
您稍后需要使用什么?
也许你可以像下面这样抓取所需的部分:
XYZ(.*\n( |\t)*.*)*<li class=".*last">(.+)<\/li>发布于 2012-11-29 23:40:26
尝试使用正则表达式:
/XYZ(?s:.*)<li class="level1 nav-(\d+)-(\d+) last">.+(<\/li>)/子模式中的s修饰符允许.匹配换行符。
发布于 2012-11-29 23:41:26
使用jQuery的php端口phpQuery可以很容易地做到这一点。
然后使用下面的例子
$liElm = pq("ul li:last:contains('xyz')");请注意,phpQuery不如正则表达式快,但更容易处理,也更舒适。
https://stackoverflow.com/questions/13628912
复制相似问题