您的位置:首页 > 业界新闻

正则表达式零宽断言使用

2012-08-22 10:41 323 查看
<h1><a href="http://www.csdn.net/article/2012-08-21/2808912" target="_blank" >【历史上的今天】1973 年谷歌联合创始人Sergey Brin诞生</a></h1>
<h4>发表于<span class="ago">20小时前</span>|<span class="view_time">671次阅读</span>|<span class="num_recom">0条评论</span></h4>
<dl>
<dt>
<a href="http://www.csdn.net/article/2012-08-21/2808912" target="_blank"><img src="http://articles.csdn.net/uploads/allimg/120821/28-120R11232290-L.jpg" alt="" /></a>
<dd>Sergey Brin是一位苏联出生的美国籍犹太裔电脑工程师兼企业家,为谷歌创始人之一。24岁与Larry Page在车库里创建了Google,创造了互联网时代的神话。</dd>
</dl>
 

我想要把
 

 
<h1><a href="http://www.csdn.net/article/2012-08-21/2808912" target="_blank" >【历史上的今天】1973 年谷歌联合创始人Sergey Brin诞生</a></h1>

这个标签中的文字匹配出来:

于是我写了一句:

(?<=<a\\s+href=\"[\\s\\S]*?>)([\\s\\S]*?)(?=(</a>))


结果报错了:Look-behind group does not have an obvious maximum length near index 23

在网上查了半天,也没有找到好的解决办法。并且我还不知道这个是怎么引起的。

后面我知道了,这个错误是因为零宽断言的表达式太长引起的。

于是我将它改成了:
(?<=<a\\shref=\"[\\s\\S]{0,100}?>)([\\s\\S]*?)(?=(</a>))

结果正确。

在这里,一定要注意,零宽断言中exp一定要有可以达到的长度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息