Korzystanie z przemian i konstruowania grup
Pierwotnie chciałem mieć numer miesiąca parsowania wyrażenia regularnego. Na początku wymyśliłem następujące wyrażenie regularne:
^([1-9]{1})|(1[012])$
i pasowało do dowolnej liczby dodatniej, mówiąc, że pasuje do cyfry wysokiego rzędu liczby, tj .:
1 => 1
2 => 2
...
9 => 9
10=> 1
...
19=> 1
20=> 2
...
Dlaczego to jest takie? Myślałem, że konstrukcja alternatywna się sprawdziRegex
wybierz lewy lub prawy, mając^
i&
sprawia, że pasuje do całego ciągu. czego mi brakuje?
P.S: Mam teraz działający regex (taki, który pasuje tylko do liczb od 1 do 12); jego:
^([1-9]{1}|1[012])$
I nie mogę zrozumieć, dlaczego tak działa ...
To jest kod, którego użyłem do testowania:
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");
}