- ベストアンサー
正規表現の書き方について
既存のプログラムで以下のソースがあります。 ------------------------------------------------ if(this.MAIL_ADDRESS.matches("[0-9-a-z-A-Z]*")){ ------------------------------------------------ [0-9-a-z-A-Z]と[0-9a-zA-Z]は同じ意味と考えてよいのでしょうか? それとも現状のプログラムの書き方が間違えていますか? (ネットで調べても、[0-9-a-z-A-Z]という書き方は見かけなかったため。たぶん動作はしてくれていると思うのですが。。) よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>[0-9-a-z-A-Z]と[0-9a-zA-Z]は同じ意味と考えてよいのでしょうか? 違う意味です。 [0-9a-zA-Z]は0~9の範囲の文字、またはa~zの範囲の文字、またはA~Zの範囲の文字にマッチします。 [0-9-a-z-A-Z]は↑に加えて-(半角ハイフン)にもマッチします。
その他の回答 (2)
- tom11
- ベストアンサー率53% (134/251)
for(char c ='!';c<='~';c++){ boolean b = String.valueOf(c).matches("[0-9-a-z-A-Z]"); boolean b1 = String.valueOf(c).matches("[0-9-a-zA-Z]"); boolean b2 = String.valueOf(c).matches("[0-9a-zA-Z-]"); System.out.println(c+" "+b+" "+b1+" "+b2); } ! false false false " false false false # false false false $ false false false % false false false & false false false ' false false false ( false false false ) false false false * false false false + false false false , false false false - true true true . false false false / false false false 0 true true true 1 true true true 2 true true true 3 true true true 4 true true true 5 true true true 6 true true true 7 true true true 8 true true true 9 true true true : false false false ; false false false < false false false = false false false > false false false ? false false false @ false false false A true true true B true true true C true true true D true true true E true true true F true true true G true true true H true true true I true true true J true true true K true true true L true true true M true true true N true true true O true true true P true true true Q true true true R true true true S true true true T true true true U true true true V true true true W true true true X true true true Y true true true Z true true true [ false false false \ false false false ] false false false ^ false false false _ false false false ` false false false a true true true b true true true c true true true d true true true e true true true f true true true g true true true h true true true i true true true j true true true k true true true l true true true m true true true n true true true o true true true p true true true q true true true r true true true s true true true t true true true u true true true v true true true w true true true x true true true y true true true z true true true { false false false | false false false } false false false ~ false false false
お礼
同じという事ですね。 ありがとうございました。
- miyajima24
- ベストアンサー率75% (6/8)
>[0-9-a-z-A-Z] >[0-9-a-zA-Z] >[0-9a-zA-Z-] >上記は全て同じ意味になるという理解で良いでしょうか? 良いです。 厳密な所で正規表現エンジンにかかるコストまで同じになるかどうかは、 これらがどう最適化されるかがちとわからないため答えられませんが、 動作としては同様の振る舞いをします。
お礼
ご回答、ありがとうございました。
お礼
ご回答、ありがとうございます。 [0-9-a-z-A-Z] [0-9-a-zA-Z] [0-9a-zA-Z-] 上記は全て同じ意味になるという理解で良いでしょうか? よろしくお願いいたします。