私は違いを理解しようとしていますmatches()
そしてfind()
。
Javadoc によれば、(私が理解している限りでは) は、matches()
探しているものが見つかった場合でも文字列全体を検索し、find()
探しているものが見つかると停止します。
その仮定が正しい場合、見つかった一致の数をカウントしたい場合を除き、matches()
の代わりにを使用する必要があるかどうかはわかりません。find()
私の意見では、String クラスには組み込みメソッドのfind()
代わりにが必要です。matches()
まとめると次のようになります。
- 私の仮定は正しいでしょうか?
matches()
の代わりにを使用すると便利なのはいつですかfind()
?
ベストアンサー1
matches
文字列全体に対して式を照合し、パターンの^
先頭と$
末尾に暗黙的に a を追加します。つまり、部分文字列は検索されません。したがって、このコードの出力は次のようになります。
public static void main(String[] args) throws ParseException {
Pattern p = Pattern.compile("\\d\\d\\d");
Matcher m = p.matcher("a123b");
System.out.println(m.find());
System.out.println(m.matches());
p = Pattern.compile("^\\d\\d\\d$");
m = p.matcher("123");
System.out.println(m.find());
System.out.println(m.matches());
}
/* output:
true
false
true
true
*/
123
は の部分文字列なのでa123b
、find()
メソッドは true を出力します。matches()
'sees' のみa123b
が と同じではないので123
、 false を出力します。