私は正規表現の初心者です。以下の日付パターンを知りたい。
(\\d{2}(0[1-9]|1[012]|[0]{2}))
私はただ知っている、
0[1-9]
は 01 または 12 または.... 191[012]
10 または 11 または 12 です[0]{2}
は0000ですか?\\d{2}
は ?
私は正規表現の初心者です。以下の日付パターンを知りたい。
(\\d{2}(0[1-9]|1[012]|[0]{2}))
私はただ知っている、
0[1-9]
は 01 または 12 または.... 191[012]
10 または 11 または 12 です[0]{2}
は0000ですか?\\d{2}
は ?\d
は、一般的に同等の事前定義された文字クラスです[0-9]
(正規表現エンジンによっては、Unicode 数字も含まれる場合があります)。さらに、{n}
は量指定子であり、正確に時刻にX{n}
一致します。したがって、連続する 2 桁に一致します。X
n
\d{2}
また、[0]{2}
2 つの連続した0
s: 00
(not 0000
) です。
についても少しずれています: , , ..., (先頭にいることはできません)0[1-9]
のいずれかに一致します。については正しいです。01
02
09
1
1[012]
全体として、正規表現は次のようになります。
正規表現について詳しく知りたい場合は、regular-expressions.infoが正規表現に関する優れたオンライン リファレンスです。
上記の回答では、 を意味\d
すると仮定し、 s をエスケープ\\d
する必要がある文字列形式で正規表現を表しているため、後者を使用していることに注意してください。\
ただし、一般的な正規表現を表す場合は、\
s をエスケープしないでおくのが最善です。つまり、\\d
はリテラルのバックスラッシュの後に が続くものとして解釈される可能性があるd
ため、\\d{4}
と一致し\dddd
ます。おそらく、これはあなたの言いたいことではありません。