正则匹配到多个结果,如何取最后一个结果?

比如内容是这样的

<div>
<ul>
//其它内容
<li>aaaaa</div>
//其它内容
<li>bbbbb</li>
//其它内容
<li>cccccc</li>
//其它内容
<li>ddddd</li>
//其它内容
</ul>
</div>

实际的内容会比这个复杂很多,
我希望可以匹配到的内容是 dddd,
我的正则表达式 (<li>(.*)</li>) ,

匹配到的结果是

<li>aaaaa</li>
<li>bbbbb</li>
<li>cccccc</li>
<li>ddddd</li>

我如何用正则直接匹配到最后一个结果?或者匹配到任意一个结果?

我也是服了,我问的只是正则,各位又是java,又是js,又是PHP的方法都来了,我只是想要个正则而已

阅读 18.2k
5 个回答

匹配最后一个可以使用正向预查

/<li>(.*)<\/li>(?![\s\S]*?<li>(.*)<\/li>)/

匹配指定位置的只能用数组下标了吧

str.match(/>(\w+)</gi).pop().replace(/<|>/ig,'')

这种的最好不要用正则,如果是java的话,可以用jsoup.jar

一般regex.match(text)都会返回一个list,然后取list最后一个元素。

兄弟你可以创建个数组 然后把一个匹配到的都放进去, 取数组最后一个元素就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏