【发布时间】:2019-10-01 14:06:09
【问题描述】:
我在一个网站上有一个简单的功能,用户输入要搜索的关键字,匹配的关键字用<span></span>包装,匹配的关键字的颜色也会改变。
下面的代码查找并替换标题中找到匹配项的关键字,但更改匹配项的大小写会根据关键字的输入方式进行更改。
protected String getTitle(object title)
{
string sTitle = title.ToString();
Regex regex = null;
string pattern = @"(\b(?:" + _Keyword.ToString().Trim() + @")\b)(?![^<]*?>)";
regex = new Regex(pattern,RegexOptions.IgnoreCase);
sTitle = regex.Replace(sTitle, "<span class='keyword-highlight'>" + _Keyword + "</span>");
return sTitle;
}
实际文本 = Trump asked Australia to help investigate Mueller
搜索关键字 = australia
假设我输入了小写的关键字australia,在这种情况下,它会找到匹配项并将其替换为Australia 与australia,这在语法上是错误的,因为我想将文本大小写保持原样实际的句子。
结果 = Trump asked australia to help investigate Mueller
如何在上述代码中进行此更改,如果我删除 RegexOptions.IgnoreCase 那么它将不匹配,因为现在搜索关键字是 CaSe SenSiTive
【问题讨论】:
-
答案是here。您不需要捕获组,因为您想用一对标签包装 整个匹配,因为存在
&$反向引用。