-1

我制作了一个控制台应用程序来测试正则表达式替换:

    string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><orders><order>";
    xml = Regex.Replace(xml, "<?xml version=\"1.0\" encoding=\"utf-8\"?>", "", RegexOptions.IgnoreCase);
    Console.WriteLine(xml);
    Console.ReadLine();

但是我得到与我的输入相同的输出,你们中的任何人都可以帮助我吗?:) 我想要的是字符串的第一部分被删除并且只返回 ""

4

2 回答 2

1

这是因为您的正则表达式包含元字符。例如,<?表示“一个可选的<”,而不是“一个<后跟一个?”。

您需要在调用之前转义元字符Replace

    xml = Regex.Replace(
        xml
    ,   Regex.Escape("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
    ,   ""
    ,   RegexOptions.IgnoreCase);
于 2013-11-12T11:51:13.230 回答
1

您的替换应如下所示:

xml = Regex.Replace(xml, @"<\?xml version=""1.0"" encoding=""utf-8""\?>", "", RegexOptions.IgnoreCase);

我换了?和 \?我还将字符串表示法更改为对正则表达式非常有用的替代格式。

于 2013-11-12T11:52:36.827 回答