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