我试图从下面的代码片段中单独获取锚标记。我对使用(<li><a .*>.*<\/a><\/li>)
尝试的正则表达式不熟悉,这给我带来了所有代码<li><a xlink:href="" title="" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
但我需要正则表达式为我带来单独的锚标记,而不是完整的结构。例如<li><a xlink:href="" title="" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
和<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
以及<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
等。
来源如下。
<tmproot><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><p xmlns="http://www.w3.org/1999/xhtml">
<br /></p><p xmlns="http://www.w3.org/1999/xhtml">
<br /></p><ul xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a xlink:href="" title="" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
<li><a title="" xlink:href="tcm:" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title=""></a></li>
</ul></ul></tmproot>
答案 0 :(得分:0)
而不是(<li><a .*>.*<\/a><\/li>)
使用<li>(<a .*>.*<\/a>)<\/li>
。
注意()的不同定位。 ()是您正在捕获的内容,因此如果您只想要锚标记,请将正则表达式的锚点部分包装在()中。
Javascript示例:
var el = document.getElementById('myTextarea');
var txt = el.value;
var res = txt.match(/<li>(<a .*>.*<\/a>)<\/li>/g);
for(var x in res){
console.log(res[x]);
}
答案 1 :(得分:0)
我认为你的正则表达式的问题是.*
是贪婪的,即它尽可能匹配。在大多数语言中,添加?
会使其不情愿:(<li><a .*?>.*?<\/a><\/li>)
也就是说,解析XML和正则表达式通常不是一个好主意,有很多陷阱和极端情况,例如,如果标记包含注释或CDATA会发生什么?