如何使用原始匹配值替换字符串

时间:2014-02-14 10:20:42

标签: c# regex

我正在尝试通过在搜索到的字符串中包装<span class="highlight"></span>来突出显示字符串。

制作了一个简单的扩展方法:

public static string Highlight(this string source, string highlightString)
{
    var regex = new Regex(highlightString, RegexOptions.IgnoreCase);
    var r = regex.Replace(
                source, 
                "<span class=\"highlight\">" + highlightString + "</span>");

    return r;
}

工作正常,但我真正想做的是在原始匹配中应用包装。

按原样,如果我搜索 trip ,我会得到

的结果
<span class="highlight">trip</span> Nordic

以及我真正想要的是

<span class="highlight">Trip</span> Nordic

原始字符串为Trip Nordic

如何替换匹配的字符串的原始部分而不是我正在搜索的字符串?

bugger是regex没有属性告诉我发现了什么(作为原始字符串),甚至没有找到匹配的位置......

2 个答案:

答案 0 :(得分:4)

如果我理解正确,您可以使用substitution

public static string Highlight(this string source, string highlightString)
{
    var regex = new Regex(highlightString, RegexOptions.IgnoreCase);
    var r = regex.Replace(
            source, 
            "<span class=\"highlight\">$&</span>");
}

输出:

<span class="highlight">Trip</span> Nordic

答案 1 :(得分:1)

regex.Replace(
            source, 
            "<span class=\"highlight\">$0</span>");

也应该有用。

$ 0 =组零=完整匹配