2009-11-01 9 views
13

正規表現[a-Z]は有効ですか?はいの場合は[a-zA-Z]と同じですか? [a-Z]の場合、aは小文字で、Zは大文字です。正規表現[a-Z]は有効ですか?はいの場合は[a-zA-Z]と同じですか?

編集:私は[AZ]はその後、有効ではありませんしながら、[AZ]が有効である(ただし、[a-zA-Z]のと同じにはなりません)というspecifiyingいくつかの回答を受け、これが本当にある

私が探していたもの 一般的に、[a-zA-Z]をよりコンパクトなバージョンに置き換えることができるかどうかを知りたかったので、

回答に寄せられたすべての方に感謝します。

答えて

33

いいえ、a(97)Z(90)よりも高くなっています。 [a-Z]は有効な文字クラスではありません。しかし、[A-z]はどちらかというと同等ではありませんが、別の理由があります。すべての文字をカバーしますが、大文字と小文字の間の文字も含めます:[\]^_`

+1

http://web.cs.mun.ca/~michael/c/ascii-table.htmlへのリンクを参考にして、beat私は15秒で私に); - 速い指... +1 – gnarf

+0

それは彼がしかし尋ねたものではありません。 –

+0

はいそれは '' a 'の前に 'Z'が来るので' [a-Z] 'が無効です – gnarf

2

あなたはいつもそれを試みることができる:

print "ok" if "monkey" =~ /[a-Z]/; 

Perlは

 
Invalid [] range "a-Z" in regex; marked by <-- HERE in m/[a-Z <-- HERE ]/ at a-z.pl line 4. 
+2

私が言ったことはまったく同じです。私の好きな言葉は、「それを試してください」ということです。なぜなら、その時にC言語で開発しているのであれば、2つの意味があるからです。 –

+3

私は「試してみてください」とは思っていません。もし彼が '[A-Z]'を試してもエラーメッセージは出ないでしょうが、どちらもうまくいきません。 –

+0

これはASCIIで大文字が先頭に来るためです。したがって、[A-Z]は有効ですが、[a-Z]は有効ではありません。 – jheddings

4

は、私は他の言語の実装についてはよく分からないんだけど、PHPにあなたがすることができると言う

"/[a-z]/i" 

大文字と小文字は区別されません。おそらく他の言語と同様のものがあります。

+0

PHPの多くの機能はPerlから提供されています。 (PHPはPerlで書かれていましたが、実際にはPのうちの1つがPerlのために使われていました) –

1

いいえ、それはASCII値がZからAに連続していないためか、有効ではありません

3

小文字のアルファベット文字が後に大文字のものを来るあなたはどのような言語を指定していないが、一般的に[a-Z]は、ASCIIのように、有効な範囲ではありません。 [A-z]が有効な範囲(すべての大文字と小文字のアルファを示し、句読点はZaの間に表示されます)が、特定の実装形態によっては異なる場合があります。 iフラグを正規表現に追加して、大文字小文字を区別しないようにすることができます。そのフラグを指定する方法については、特定の実装を確認してください。

2

有効であれば、期待通りの効果は得られません。

Zの文字コードの文字コードよりも低いので、コードが範囲[Z-a]を意味するために交換されている場合、それは文字Zaを含むであろう、すなわち、[Z\[\\\]^_`a]と同じである、となります間の文字。

[A-z]を使用してすべての大文字と小文字を取得すると、これはまだ[A-Za-z]と同じではなく、[A-Z\[\\\]^_`a-z]と同じです。

1

私はちょうどスクリプト(これは私のものではない)でこれを倒しました。

あなたのロケール(LANGまたはLC_CTYPE環境変数)に基づいてgrep、awk、sedが[a-Z]を受け入れるようです。POSIXでは、[a-Z]はこれらのツールでは許可されていませんが、その他のロケール(en_gb.utf8など)では動作し、[a-zA-Z]と同じです。

はい、これは_^[]`と一致しません。

デバッグにかなり時間がかかることを考えれば、誰でも正規表現で[a-Z]を使用することを強く推奨しません。

関連する問題