-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

これは、正規表現にメタ文字が含まれているためです。たとえば、は「a の後に a が続く」ではなく、「<?オプションの」を意味します。<<?

を呼び出す前に、メタ文字をエスケープする必要がありますReplace

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