C# RegEx.Replace失败,替换字符串为$0.00
我正在尝试使用静态RegEx.Replace方法进行一个简单的替换,如果替换字符串中有“$0.00”或它的某种派生项,则替换失败 代码如下:C# RegEx.Replace失败,替换字符串为$0.00,c#,regex,C#,Regex,我正在尝试使用静态RegEx.Replace方法进行一个简单的替换,如果替换字符串中有“$0.00”或它的某种派生项,则替换失败 代码如下: void Main() { try { string inputString = "[BEGIN-LOOP:DETAILS]this is what I want to replace[END-LOOP:DETAILS]"; string replacementString = "som
void Main()
{
try
{
string inputString = "[BEGIN-LOOP:DETAILS]this is what I want to replace[END-LOOP:DETAILS]";
string replacementString = "some text $0.00";
inputString = Regex.Replace(inputString, @"(\[BEGIN-LOOP:DETAILS\])(.*?)(\[END-LOOP:DETAILS\])", replacementString, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Console.WriteLine(inputString);
}
catch (Exception ex)
{
throw;
}
}
失败正则表达式的输出为:
一些文本[BEGIN-LOOP:DETAILS]这是我要替换的[END-LOOP:DETAILS].00
应该是
某些文本$0.00您需要转义美元,如上的MSDN页面所示 $$替换在替换的字符串中插入一个文字“$”字符 所以你想要:
string replacementString = "some text $$0.00";
顺便说一句,请不要像那样使用try/catch块。。。它会毫无益处地把代码弄乱。您应该转义
$
文字,例如:$
。另外,如果您只想替换这就是我要替换的最好使用regexp:
(?<=\[BEGIN-LOOP:DETAILS\]).*?(?=\[END-LOOP:DETAILS\])
(?正如Kirill Polishchuk已经指出的,您应该使用不同的搜索模式。此模式匹配前缀和后缀之间的位置:
(?<=prefix)find(?=suffix)
(?我对regex了解不多,但您必须避开“$”吗?当它失败时会发生什么?我用输出更新了问题
(?<=\[BEGIN-LOOP:DETAILS]).*?(?=\[END-LOOP:DETAILS])