正则表达式替换案例不敏感问题

Jon*_*Jon 1 .net c# regex asp.net

我正在实施网站搜索,并尝试使用以下代码突出显示用户搜索的单词:

data = Regex.Replace(data, Model.SearchCriteria, "<strong>" + Model.SearchCriteria + "</strong>", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

然而,如果数据是"我往北走向加拿大"并且用户搜索"北",则结果将显示"我向北移向加拿大",北方突出显示但实际数据已被错误地更换.

如何高亮显示用户搜索的内容,如何保持返回的数据?

Jar*_*Par 5

在这种情况下,您需要使用替换模式将原始文本放入替换字符串中,而不是显式搜索条件

data = Regex.Replace(
  "("+Model.SearchCriteria+")",
  "<strong>$1</strong>",
  RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

将parens放在搜索条件周围会将其放入未命名的组中.然后,您可以使用替换字符串中的索引引用此组$1.然后,这将使用原始匹配的文本.

有关Regex.Replace中替换字符串的信息