fkm blog

software開発に関することを書いていきます

Javaの正規表現

Java正規表現マッチングを使いたい場合, java.util.regex.Patternと, java.util.regex.Matcherを使いますよね.

この, Matcherのmatches()メソッドにはこんなことが書いてます. ソースはここ

matches メソッドは、入力シーケンス全体とパターンをマッチする

つまり, こうなります.

Pattern p = Pattern.compile("[0-9]+");
Matcher m1 = p.matcher("12345");
boolean b1 = m1.matches(); // true

Matcher m2 = p.matcher("a12345b");
boolean b2 = m2.matches(); // false

^や$がなくても, 全体とマッチしてしまうので, もとの正規表現とは微妙に意味が異なりますよね.

そして, これをそのままC#などにもっていくとm2のようなケースがマッチしてしまい, Javaとは挙動が変わってしまうので注意が必要だったりします(´・ω・`)