如何使用regexp的关键字突出显示完整的单词?

时间:2010-02-26 07:38:57

标签: c# asp.net regex

我有更长的文字和一些关键字。我想在文中突出显示这些关键字。这个代码没有问题:

        private static string HighlightKeywords2(string keywords, string text)
        {
            // Swap out the ,<space> for pipes and add the braces
            Regex r = new Regex(@", ?");
            keywords = "(" + r.Replace(keywords, @"|") + ")";

            // Get ready to replace the keywords
            r = new Regex(keywords, RegexOptions.Singleline | RegexOptions.IgnoreCase);

            // Do the replace
            return r.Replace(text, new MatchEvaluator(MatchEval2));
        }


        private static string MatchEval2(Match match)
        {
            if (match.Groups[1].Success)
            {
                return "<b>" + match.ToString() + "</b>";
            }

            return ""; //no match
        }

但是当“锦标赛”这个词出现在文本中并且关键字“tour”变成<b>tour</b>nament时。我想强调完整的词:<b>tournament</b>

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以在每个关键字之前和之后添加\w*。这样,如果整个单词包含关键字,则匹配整个单词。

修改:在您的代码中,

keywords = "(\\w*" + r.Replace(keywords, @"\w*|\w*") + "\\w*)"; 

应该这样做。