正規表現ポイントの他の動作は何ですか?

正規表現ポイントの他の動作は何ですか?

このWiki記事から:正規表現

たとえば、正規表現で「a」のリテラル文字のみを一致させるのではなく、a.メタ文字は改行文字を除くすべての文字と一致します。したがって、この正規表現は、、または、またはと一致します。a.a axa0

しかし、Javaプログラムでは、dot(.)が0のエントリと一致しないことがわかります。

System.out.println (Pattern.matches("geeksforge.ks", "geeksforgeks"));    //false
System.out.println (Pattern.matches("geeksforge.",  "geeksforge"));       //false
  1. wikiで引用されたテキストは正規表現のどのようなバリエーションを参照していますか?
  2. Javaはどの正規表現バリアントを使用しますか?

私はPOSIXとPerlという正規表現の2つのバリエーション/構文を知っています。しかし、もっと多くのバリエーションがあるのか​​、どの言語がどの言語を使用しているのかはわかりませんか?

ベストアンサー1

最新によるとJava APIドキュメント、ドット(.)文字は、「すべての文字(行終端文字と一致しても一致しない場合もあります)」と一致します。それはゼロの発生と一致するとは言いません。リンクされた記事を読んだ後も、そのポイントがゼロ回の発生と一致するとは明記されていません。

*正規表現がゼロ項目と一致するようにするには、アスタリスク()または疑問符()数量子を使用する必要があります。?これは、特に前の文字がゼロ個以上の一致に一致するためです。

System.out.println (Pattern.matches("geeksforge.?ks", "geeksforgeks")); //true
System.out.println (Pattern.matches("geeksforge.?",  "geeksforge"));    //true
System.out.println (Pattern.matches("geeksforge.*ks", "geeksforgeks")); //true
System.out.println (Pattern.matches("geeksforge.*",  "geeksforge"));    //true

ドキュメントによると、java正規表現はPerlとPOSIXの両方の構文をサポートしていますが、違いとサポートされているものとサポートされていないことを理解するには、ドキュメントを読む必要があります。

おすすめ記事