もともと私は月の数字を解析する正規表現が欲しかった。最初に、次の正規表現を思いつきました。
^([1-9]{1})|(1[012])$
そして、それは数値の上位桁に一致すると言って、任意の正の数値に一致しました。
1 => 1
2 => 2
...
9 => 9
10=> 1
...
19=> 1
20=> 2
...
どうしてこんなことに?交互構造はRegex
、左または右のいずれかを選択し、それを文字列全体に一致させると考えました^
。&
私は何が欠けていますか?
PS: 現在、正規表現が機能しています (1 から 12 までの数字のみに一致する正規表現)。これは:
^([1-9]{1}|1[012])$
そして、なぜそれがうまくいくのか理解できません....
これは私がテストに使用したコードです:
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");
}