- - PR -
正規表現の利用
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-21 19:20
正規表現の書き方で悩んでおります
0〜9、a〜z(小文字)、半角ピリオドのみを許す正規表現の書き方なんですが Pattern p = Pattern.compile("[0-9a-z]"); 0〜9、a〜z(小文字)まではこれでいいと思うのですが boolean ret; String input="0123456789abcdz"; ret = p.matcher(input).matches(); retにはFalseが帰ってきます いろいろと調べているのですが、どうもよくわかりません また、半角ピリオドをこれに追加する方法わかりません ご存知の方がいらっしゃればご教授願います | ||||||||||||
|
投稿日時: 2006-07-21 19:35
いろいろと調べなくても Pattern クラスのJavadocだけで十分ですよ。
特に以下の内容はよく読んでいますか? - 文字クラス - 定義済みの文字クラス - 最長一致数量子 - 最短一致数量子 - バックスラッシュ、エスケープ、および引用 | ||||||||||||
|
投稿日時: 2006-07-21 20:38
正規表現の知識なしでAPIドキュメントを読んでもわかりにくいかもしれないですね。
文字クラス[〜]は、1文字のみにマッチします。ですので、Natsumeさんが書かれたパターンはinputが1文字のときしかマッチし得ません。 ピリオドに関しては、何も考えずそのまま文字クラスの最後にでも追加すれば良いです。 | ||||||||||||
|
投稿日時: 2006-07-22 02:36
自分は↓を参考にしました。
http://www.hellohiro.com/regex.htm | ||||||||||||
|
投稿日時: 2006-07-23 10:02
matches()メソッドの動作なのですが、 「入力シーケンス全体がこの正規表現エンジンのパターンとマッチした場合にかぎり、true」 となっているので、文字列データの先頭から末尾まで全て一致する正規表現でなければ trueにはなってくれません、昔ハマりました。
「^」と「+」を付けて、 「文字列の先頭から末尾まで半角英数字または半角ピリオドの場合trueを返す」 という意味にすることでマッチします。 また
というように、定義済みパターンを使った表現もできますよ。 |
1