2012-04-13 5 views
1

私は[x-y]はxのasciiコードからyのasciiコードまでのすべての文字と一致すると考えました。したがって、[A-z]は65から122までの任意の文字でなければなりません。しかし、bashのgrepは '無効な範囲'と[a-Z]はASCIIコードで97から90の範囲のすべてのアルファベットに対して正しいと言います。gregeの正規表現[A-Z] behaivour

このような場合、grepで正確にどのように動作しますか?そして一般的に[x-y]は正規表現のasciiコードとは関係ありませんか?

+2

Dupe:http://stackoverflow.com/questions/1658844/is-the-regular-expression-az-valid-and-if-yes-then-is-it-theame-as-a-za -z –

答えて

2

regex(5)は実装に何も言及していません。 [a-Z]は他の方法でも解釈できます(joeのコメントを参照してください)(122-65+1)= 58 != 26*2 =>あなたが望むように[a-Z]を実装した場合など、他の文字があります。

とにかく、最終行はgrepが許可しないので、regex(5)はそれを強制しません。

[a-zA-Z]を使用してください。