Java コード:
import java.util.regex.*;
class Test {
public static void main(String[] args) {
String r = "\\bdog\\b";
Pattern p = Pattern.compile(r);
String text = "abc dog def";
System.out.println(p.matcher(text).matches());
}
}
同等の Perl コード:
$x = "abc dog def";
if ($x =~ /\bdog\b/) {
print "matches";
}
Perl コードは期待どおりに動作し、文字列 "abc dog def" が指定された正規表現と一致することを出力します。一方、Java コードは、文字列が正規表現と一致しないことを示しています。私は愚かな間違いを犯していますか?興味深いことに、 Oracle Docsで例示されているように (文字列リテラルではなく) cmd 行に正規表現を入力すると、問題なく動作します。