0

所以我有这个html:

<img src="images" alt="alt" />
alt <a href ="http://google/something">alt</a>
test hallo world monkey
<p>alt</p>

和包含的字典

{alt, test, hallo, world, monkey, something}

所以我需要一个正则表达式或其他方法来替换不在 A 标签或 img 标签内的单词我尝试了以下正则表达式:

(?<![a-zA-ZåøæÅØÆ])alt(?![a-zA-ZåøæÅØÆ])^*(?!=)$

http://rubular.com/r/p52ezGmVHO

4

2 回答 2

1

您可以使用正则表达式并对字母进行否定的前瞻和后视:

(?<![a-zA-Z])keyword(?![a-zA-Z])

在您的示例中,这将如下所示:

bodyText = Regex.Replace(bodyText, "(?<![a-zA-Z])" + article.headword + "(?![a-zA-Z])", "<a class=\"dic\" href=\"#\">" + article.headword + "</a>");

我的第一个意图是对空白字符进行积极搜索,但后来我想到了标点符号之类的东西,如果关键字有 .,!? 最后,对吧?因此,前瞻和后瞻本质上是检查关键字之前或之后的内容,而无需替换这些内容。

于 2012-07-31T10:01:54.323 回答
0

这就是我最终做的

var regex = new Regex("(?<![a-zA-Z" + SpecialChars + "])" + article.headword + "(?![a-zA-Z" + SpecialChars + "])+(?!==)");

bodyText = regex.Replace(bodyText, "<a href=\"#dic\">" + headword + "</a>");

这只会替换第一个

于 2013-04-19T14:24:53.917 回答