Matcherを使用した正規表現でfind()がうまく動作しない

前提

入力された文字列が正規表現にマッチするかどうかをチェックするプログラムを書いていたところ、以下のような現象が起きました。

カタカナを入力した時、「OK」になるはずが「NG」となりました。コンソールを見ると①が「true」となっていましたので「OK」が表示されるはずです。
なんとなく①のprint文をコメントアウトしカタカナを入力したところ、「OK」が表示されるようになりました。
この差は何でしょうか?

該当のソースコード

Java

1if(!StringUtil.isNullOrEmpty(this.yomi)){2 Pattern pattern = Pattern.compile("^[ァ-ヶー]*$");3 Matcher m = pattern.matcher(this.yomi);4 System.out.println(m.find()); // ...①5 if(!m.find){6 System.out.println("NG");7 } else {8 System.out.println("OK");9 }10}

補足情報(FW/ツールのバージョンなど)

Java8
Eclipse 2019-06(4.12.0)

コメントを投稿

0 コメント