私の理解は、Javaの正規表現の実装はPerlに基づいているということです。しかし、次の例では、同じ文字列で同じ正規表現を実行すると、JavaとPerlは異なる結果を返します。ここでJavaとPerlの正規表現が異なる動作をするのはなぜですか?
は、Javaの例です:
public class RegexTest {
public static void main(String args[]) {
String sentence = "This is a test of regular expressions.";
System.out.println(sentence.matches("\\w") ? "Matches" : "Doesn't match");
}
}
これが返されます。
と一致していませんここではPerlの例だ:
my $sentence = 'This is a test of regular expressions.';
print ($sentence =~ /\w/ ? "Matches" : "Doesn't match") . "\n";
これが返されます。私には
にマッチし、 Perlの結果は理にかなっています。これは、1つの単語の文字に一致するものを探します。私はJavaがそれをマッチと見なさない理由を理解していません。違いの理由は何ですか?
PCREは、perlバージョン5の初期にはperlと互換性があり、perl v4であった。わからない。一方、perlの正規表現は前進しています。より一般的な質問(タイトルの1つ)に答えるためには –
+1。私は、Jeffrey Friedlによる 'Mastering Regular Expressions'という本は、共通の正規表現の似たような点と相違点を理解するのに最適だと付け加えたいと思います。 – Jonik