ASP.NET正则表达式

时间:2011-02-09 10:46:14

标签: asp.net regex

我有以下正则表达式

(?<!<[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>

不应该被替换。我现在的方式是负面的lookbehind找到一个粗体标签和匹配。如果它在里面,我只希望它跳过。对于那些感兴趣的人,我需要这个,因为我的搜索页面将结果返回为

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

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

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

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