正则表达式零宽断言使用

来源:互联网 发布:excel irr函数 sql实现 编辑:程序博客网 时间:2024/04/30 02:28
<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一定要有可以达到的长度。


原创粉丝点击