2011-02-09 59 views
0

我见我基本上使用上述以取代一个url某些字以下的正则表达式ASP.NET正则表达式

(?<!<[title|h1|a][^>]*>[^<]*)(?<!<[meta|img][^>]*[^/>])(someword) 

。即

The all new product x 

将成为

The all new <a href="/productx">product x</a> 

其所有工作正常。我正在做负面的背后,所以我不会取代正在倾斜的东西,H1和锚标签。我现在需要扩展它,以便如果锚标记中存在粗体标记,则不匹配。

<a href="/something">The all new <b>product x</b></a> 

不应该被替换。我现在的方式是负面的后台发现一个大胆的标签和匹配。我只想让它跳过,如果内部是。对于那些有兴趣谁,我需要这个作为我的搜索页面返回结果为

<a href="/something"><b>searchterm</b> some other text</a> 

任何帮助非常赞赏

回答

0

简短的回答是,你不能写一个良好的,单一的正则表达式做你想。总会有特殊情况导致误报。有更好的方法来做你想做的事。这就是说,如果你仍然想要一个正则表达式的解决方案,这可能更接近你想要的:

(?<!<(?:title|h1|a)[^>]*>(?:[^<]|<[^/]|</(?!title|h1|a))*|<[meta|img][^>]*)(someword) 
+0

这样做的工作,谢谢。只是出于兴趣,你会建议什么其他方式?我非常感兴趣。谢谢 – Peuge 2011-02-09 11:56:51