C#のRegexの正規表現の改行(\r)について


C#で正規表現で行単位で取得するソースを組んでいたのですが

①`string text ="{\r\n{\r\n";`  
②`string text ="{\n{\n";`  
③`string text ="{\r{\r";`

[code]

    string[] lineLists2 = Regex.Split(text, "\n|\r\n|\r");
    string[] lineLists3 = Regex.Split(text, "(\n|\r\n|\r)");
    
    Regex regex = new Regex(".*[\n|\r\n|\r]");
    Match match = regex.Match(text, 0);
    
[/code]

を行うと、matchには  
①`{\r\n`  
②`{\n`  
となるのですが、③だけ出力値が  
③`{\r{\r`  
となり、Splitでは`\r`を認識しており、Matchのみが途中の`\r`を認識していないのですが  
理由をご存じの方ご教示願えないでしょうか  
また、`{\r`にする方法もご存じであれば重ねてご教示お願いします。

環境：Windows10、VS2022 Community




[ピリオド記号 (`.`) は、`\n` (改行文字、`\u000A`)
を除く任意の文字と一致](https://docs.microsoft.com/ja-jp/dotnet/standard/base-
types/character-classes-in-regular-expressions#any-
character-)すると定められているからです。つまり、`.`は`\r`にマッチします。  
`".*[\n|\r\n|\r]"`というパターンは`.`が`\r`にマッチしないことを期待した記述ではないでしょうか？  
`"[^\r\n]*[\n|\r\n|\r]"`なら期待する結果が得られると思います。

もちろん`Regex.Split`が期待通りの動作をするのは`.`を使っていないからです。




[ピリオド記号 (`.`) は、`\n` (改行文字、`\u000A`)
を除く任意の文字と一致](https://docs.microsoft.com/ja-jp/dotnet/standard/base-
types/character-classes-in-regular-expressions#any-
character-)すると定められているからです。つまり、`.`は`\r`にマッチします。  
`".*[\n|\r\n|\r]"`というパターンは`.`が`\r`にマッチしないことを期待した記述ではないでしょうか？  
`"[^\r\n]*[\n|\r\n|\r]"`なら期待する結果が得られると思います。

もちろん`Regex.Split`が期待通りの動作をするのは`.`を使っていないからです。

