- ベストアンサー
linuxなどの正規表現において[1-9]のとりあつかいについて
linuxなどの正規表現において これまでa[1-9]とすると、1から9までの数字という意味になるかと思っていましたが、そうではないということがわかりました。(ですよね?) 調べてみると、任意の1字となっております。 a[11-20]のケースで考えると、 ・・・・ [○-○]の意味が、まったくわからなくなってしまいました。 どこかわかりやすい説明をしているサイトor教えていただけるかた なにとぞ、ご教示くださいますようお願い申し上げます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
[]の中は数値としての意味は無く、ただの文字です。 [123]は "123" という数ではなく、"1"または"2"または"3"のいずれか、という意味です。 数字以外でも [ade456]"a"または"d"または"e"または"4"または"5"または"6"のいずれか などの文字も書けます。 []の中の-は連続した文字を指定するときの、簡略化した記法です。 a[1-9]はa[123456789]と同じです。 たまたま、整数1から9までと同じなだけです。 [a-z]のように、文字も書けます。 以上を踏まえて、[11-20]を展開すれば [1120] (1~2なので1と2が該当) [120] (重複をまとめる) となり "1"または"2"または"0"のいずれか となります。
その他の回答 (4)
- Murasan759
- ベストアンサー率59% (312/527)
コンピュータ内部では、文字コードで処理されます。 "1"の文字コードは、一般的なPCでは0x31、"9"の文字コードは0x39です。 正規表現の[1-9]は、文字コードの0x31から0x39のいずれか一つの文字とマッチするということです。そして、通常、どの文字コード体系でも"1"から"9"の文字は連続して文字コードが付与されていますから、[1-9]で"123456789"のいずれか一つの文字とマッチするのです。
- yambejp
- ベストアンサー率51% (3827/7415)
正規表現は文字列を判断するものだということから理解すれば自明です。 おそらくなさりたいことは a(?:1[1-9]|20) 的な処理が必要です。
- notnot
- ベストアンサー率47% (4900/10358)
[ ] は、その中のどれかの文字一文字にマッチします。 例えば [abx] だと、a または b または x にマッチします。 英小文字のどれかに一致だと、[abcdefghijklmnopqrstuvwxyz] と書くわけですが、これは面倒なので、略記方として、[a-z] と書くことが出来ます。[a-e] だと、[abcde]と同じ。これが [ ] の中の - の意味です。 [1-2] は [12] と同じです。つまり 1 または 2。 [11-20]は、[1120] と同じなので 1 または 2 または 0 となります。
- koko_u_u
- ベストアンサー率18% (216/1139)
>linuxなどの正規表現において 環境がまったくわかりません。 linux とは言うまでもなく OS のことで、正規表現とは無関係です。 >調べてみると、任意の1字となっております。 どのように「調べ」たのか補足にどうぞ。