C#Regex.Replace不区分大小写,作为匹配的函数

use*_*285 2 c# regex

说我有这样的文字:

string text = "Hello world! hElLo world!";
Run Code Online (Sandbox Code Playgroud)

我想以不区分大小写的方式在每个单词'hello'周围添加一个span标记,以便结果如下:

string text = "<span>Hello</span> world! <span>hElLo</span> world!";
Run Code Online (Sandbox Code Playgroud)

我尝试用Regex.Replace这样做:

Regex.Replace(text, "hello", "<span>hello</span>", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

但我真正需要的只是要创建的span标签,只保留原始外壳.所以我需要替换短语是匹配短语的函数.我怎样才能做到这一点?

Wik*_*żew 7

hello使用替换模式中的硬编码,而是使用$&对整个匹配值的反向引用.

更换"<span>hello</span>""<span>$&</span>",使用

var replaced = Regex.Replace(text, "hello", "<span>$&</span>", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

查看有关正则表达式替换中的替换反向引用的更多信息.