3行目の責任(.*)
とその仕組みは何ですか?
String Str = new String("Welcome to Tutorialspoint.com");
System.out.print("Return Value :" );
System.out.println(Str.matches("(.*)Tutorials(.*)"));
.matches()
Str
提供された正規表現を使用して解析するための呼び出しです。
正規表現、または正規表現は、文字列をグループに解析する方法です。提供されている例では、これは「Tutorials」という単語を含むすべての文字列に一致します。(.*)
単に「任意の文字の0個以上のグループ」を意味します。
このページは、優れた正規表現リファレンスです(非常に基本的な構文と例について)。
matches
パラメータとして正規表現文字列を取り(.*)
、任意の文字を0回以上貪欲にキャプチャすることを意味します
.*
任意の文字の0個以上のグループを意味します
でRegex
:
.
ワイルドカード: を除く任意の 1 文字に一致します。
\n
たとえば、 inとin のパターンa.e
マッチave
nave
ate
water
*
前の要素に 0 回以上一致する
たとえば、パターン\d*\.\d
マッチ.0
、19.9
、219.9
を括弧で囲む理由はありません。また、すでにリテラルを取得している場合.*
にインスタンス化する理由もありません。しかし、さらに悪いことに、この方法はここでは適切ではありません。String
String
matches()
それが行うことは、文字列の最初から最後までの任意の文字を貪欲に照合することです。次に、 が見つかるまでバックトラックし"Tutorials"
、その後、すべての文字 (改行を除く) に再び一致します。
findメソッドを使用する方がわかりやすく、より明確です。find メソッド"Tutorials"
は String 内の最初のものを単純に検索"(.*)"
し、パターンからその部分を削除できます。
便宜上、ワンライナーとして:
System.out.printf("Return value : %b%n", Pattern.compile("Tutorials").matcher("Welcome to Tutorialspoint.com").find());