如何在.NET Regex Replace中转义替换/替换部分

时间:2014-01-08 20:52:55

标签: c# .net regex replace substitution

我想在.NET中的regex replace命令中转义替换部分:

public static string GetPriceMessage(string data, string price)
{
    var repl = "This is a $1 priced at " + price + " suitable for $2.";
    return Regex.Replace(data, "item_name: ([^;]+); suitable: ([^;]+)", repl);
}

var price = "$15/item";
var data = "item_name: Puzzle; suitable: all ages";

GetPriceMessage(data, price)

我想确保price逐字替换。 Regex.Escape不起作用。

1 个答案:

答案 0 :(得分:4)

您只需要在替换中转义$,因为所有替换都以$开头。即只需使用:

price.Replace("$", "$$");

有关详细信息,请参阅以下问题:Handling regex escape replacement text that contains the dollar character

  

替换是在替换模式中识别的唯一正则表达式语言元素。所有其他正则表达式语言元素(包括字符转义)仅在正则表达式模式中允许,并且在替换模式中无法识别。

[...]

  

在替换模式中,$表示替换的开始。