Verwenden von Alternations- und Gruppierungskonstrukten
Ursprünglich wollte ich einen regulären Ausdruck, der die Monatszahlen analysiert. Zuerst habe ich mir folgenden Regex ausgedacht:
^([1-9]{1})|(1[012])$
und es stimmte mit jeder positiven Zahl überein, was besagt, dass es mit der höherwertigen Ziffer der Zahl übereinstimmte, d.h.
1 => 1
2 => 2
...
9 => 9
10=> 1
...
19=> 1
20=> 2
...
Warum ist das so? Ich dachte, dass das Wechselkonstrukt machen wirdRegex
wähle entweder die linke oder die rechte, während du hast^
und&
Lässt es mit der gesamten Zeichenfolge übereinstimmen. Was vermisse ich?
P.S .: Ich habe jetzt eine Regex (eine, die nur mit Zahlen von 1 bis 12 übereinstimmt); es ist:
^([1-9]{1}|1[012])$
Und ich kann nicht verstehen, warum es so funktioniert ...
Dies ist der Code, den ich zum Testen verwendet habe:
Regex r = new Regex(@"^([1-9]{1})|(1[012])$");//^([1-9]{1}|1[012])$
for (int i = -5; i < 35; i++)
{
Console.Write(i);
Console.Write("\t");
Match m = r.Match(i.ToString());
if (m.Success)
Console.WriteLine(m.Groups[0].Value);
else
Console.WriteLine("false");
}