查找/替换单词拼图

时间:2009-05-05 07:59:37

标签: asp.net vb.net regex string

假设我有一个包含Word属性和Sentence属性的对象。句子必须使用单词,我想用一个使用公共函数的链接替换该句子中的单词(比如GetLinkedSentence)。问题可能是句子使用了复数形式的单词,也许“单词”本身实际上是一个短语,或者甚至是连字符。这个词也没有长度限制。如何使用链接(www.example.com /?[word])查找并替换此单词(在ASP.NET中,最好是VB)?

2 个答案:

答案 0 :(得分:1)

查看System.Text.RegularExpressions命名空间中的RegEx.Replace。

例如,在“今天的天气是下雨”这句话中替换“天气”一词。通过链接,您可以执行以下操作:

RegEx.Replace(sSentence, "(weather('s)?)", "<a href='http://www.weather.com'>$1</a>")

上面的正则表达式也将取代简单的复数单词(最后用's')。你可以为“ies”复数形式获得更复杂的表达式。

答案 1 :(得分:0)

查看这个正则表达式(在Expresso的帮助下,感谢eidylon!):

(?:(?:\b\w+)?{1}(?:{2}|{3})?).+?\b

其中:

{1} =整个单词减去最后两个字母。例如,如果单词是“happy”,则{1}将替换为“hap”

{2} =单词的倒数第二个字(如果单词“happy”,则为“p”)

{3} =单词的倒数第二个和最后一个字母(本例中为“py”)

这将发现“快乐”,“快乐”,“不快乐”,“不幸”......不幸的是,在这个例子中,它还会找到“发生”,“倒霉”,“发生”等词语,这将有效我,因为我通常会寻找更加模糊的词,其根不是那么常见,而且这个词有点长,例如“加剧”,所以它将匹配“exacerba”,“exacerbat”和“exacerbate” “,这比”幸福“和”快乐“更不常见。同样重要的是要注意它不会找到具有广泛根变化的词,比如“人”到“人”。

所以虽然它不是一个完美的解决方案,它对我有用:)感谢你指出我正确的方向,eidylon!现在我对正则表达式有了更好的理解!