Как я могу выделить полные слова с ключевыми словами с помощью регулярного выражения? - PullRequest
0 голосов
/ 26 февраля 2010

У меня более длинный текст и несколько ключевых слов. Я хочу выделить эти ключевые слова в моем тексте. Это не проблема с этим кодом:

        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
        }

Но когда слово «турнир» присутствует в тексте, а ключевое слово «тур» становится <b>tour</b>nament Я хочу, чтобы он выделил полное слово: <b>tournament</b>.

Как я могу это сделать?

1 Ответ

1 голос
/ 26 февраля 2010

Вы можете добавить \w* до и после каждого ключевого слова. Таким образом, все слово будет соответствовать, если оно содержит ключевое слово.

Редактировать: В вашем коде

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

должен это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...