简单的正则表达式替换以保留原始字符串

本文关键字:保留 原始 字符串 替换 正则表达式 简单 | 更新日期: 2023-09-27 18:08:21

我有这个:

Title = Regex.Replace(Title, s, "<span style='"background:yellow'">" + s + "</span>", RegexOptions.IgnoreCase);

其中s是类似于facebook的词。如果标题是:

How to make a Facebook game

我想替换为:

How to make a <span style="background:yellow">Facebook</span> game

即使搜索词是"脸书"(注大写(。基本上,我如何保留单词的原始大写?

另一个例子,搜索项FACEBOOK,字符串Hello FaCeBoOk被转换为Hello <span style="background:yellow">FaCeBoOk</span>

简单的正则表达式替换以保留原始字符串

您可以使用$&替代:

Regex.Replace(Title, s, "<span style='"background:yellow'">$&</span>", RegexOptions.IgnoreCase)

您可以简单地包含一个与单词"facebook"匹配的捕获组,并将该捕获组作为替换字符串的一部分。这最终会将它包含在最终结果中,就像它在输入中出现的一样。

var title = "How to make a Facebook game";
title = Regex.Replace(title,
                      "(facebook)",
                      "<span style='"background:yellow'">$1</span>",
                      RegexOptions.IgnoreCase);

在实际操作中查看

var input = "How to make a Facebook game, do you like facebook?";
var searchFor = "facebook";
var result = Regex.Replace(
    input, 
    searchFor, 
    "<span style='"background:yellow'">$+</span>", 
    RegexOptions.IgnoreCase);

唯一重要的是$+。它包含最后获取的文本。这甚至适用于"如何制作一个Facebook游戏,你喜欢Facebook吗?"第一个Facebook将为左大写,第二个为左小写。

我要补充的是,如果你只想寻找完整的单词,那么你可以制作:

searchFor = @"'b" + searchFor + @"'b";

这将只查找单词边界上的字符串。