[java]正規表現の練習 - アルファベットと数字以外にマッチ 2008/10/02

Javaです。正規表現の練習です。

アルファベットと数字以外にマッチです。
文字列に「アルファベットと数字」以外が含まれているか調べます。
すなわち「アルファベットと数字」がでてくるまで調べるということだと理解しました。

悩んだあげく下記のようなコードにしてみました。

static boolean b(String s) {
return s.matches(".*[_\\W].*");
}
static boolean a(String s) {
return s.matches(".*[^\\p{Alnum}].*");
}


最初のメソッドは
\Wは、非単語文字:[^\w]なのですが単語構成文字:[a-zA-Z_0-9]にはアンダアスコアが含まれているのでそれを先に記述しています。

つぎのメソッドは\p{Alnum}ではないものをさがすというメソッドです。
\p{Alnum}は、英数字: [\p{Alpha}\p{Digit}]という意味です。

えーと
まとめると正規表現を書くうえで、「~なものを探す」、「~でないものを探す」というこのふたつアプローチがあるのかなぁというわけです。

: