Dlaczego .NET regex nie traktuje \ n jako znaku końca linii?. Klasa Regex i nowa linia .NET:
Przykładowy kod:
string[] words = new string[] { "ab1", "ab2\n", "ab3\n\n", "ab4\r", "ab5\r\n", "ab6\n\r" };
Regex regex = new Regex("^[a-z0-9]+$");
foreach (var word in words)
{
Console.WriteLine("{0} - {1}", word, regex.IsMatch(word));
}
I to jest odpowiedź uzyskać:
ab1 - True
ab2
- True
ab3
- False
- False
ab5
- False
ab6
- False
Dlaczego mecz regex ab2\n
?
Aktualizacja: Nie sądzę Multiline jest dobrym rozwiązaniem, to znaczy chcę, aby potwierdzić logowanie pasujące tylko określonych znaków i musi być pojedyncza linia. Jeśli zmienię konstruktor dla opcji MultiLine ab1, ab2, ab3 i ab6 pasują do wyrażenia, ab4 i ab5 nie pasują do tego.
Dlaczego nie AB4 pojawiają się na wyjściu? –
Przypuszczam, że dzieje się tak z powodu samego \ r - to dokładne wyjście z konsoli – empi