我制作了一个控制台应用程序来测试正则表达式替换:
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();
但是我得到了与输入相同的输出,你们中的任何人都可以帮助我吗?:) 我想要的是字符串的第一部分被删除,只返回“”
答案 0 :(得分:1)
这是因为你的正则表达式包含元字符。例如,<?
表示“可选的<
”,而非“<
后跟?
”。
您需要在调用Replace
之前转义元字符:
xml = Regex.Replace(
xml
, Regex.Escape("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
, ""
, RegexOptions.IgnoreCase);
答案 1 :(得分:1)
您的替换应如下所示:
xml = Regex.Replace(xml, @"<\?xml version=""1.0"" encoding=""utf-8""\?>", "", RegexOptions.IgnoreCase);
我取代了?用\?我还将字符串表示法更改为对Regex非常有用的替代格式。