2

3行目の責任(.*)とその仕組みは何ですか?

String Str = new String("Welcome to Tutorialspoint.com");
System.out.print("Return Value :" );
System.out.println(Str.matches("(.*)Tutorials(.*)"));
4

6 に答える 6

4

.matches()Str提供された正規表現を使用して解析するための呼び出しです。

正規表現、または正規表現は、文字列をグループに解析する方法です。提供されている例では、これは「Tutorials」という単語を含むすべての文字列に一致します。(.*)単に「任意の文字の0個以上のグループ」を意味します。

このページは、優れた正規表現リファレンスです(非常に基本的な構文と例について)。

于 2012-11-04T05:58:25.053 に答える
4

式は、単語の任意の文字の接頭辞と接尾辞が付いた任意の単語と一致Tutorialします。.*ゼロ回を含む任意の回数の任意の文字の出現を意味します。

、任意の文字を意味する.正規表現メタ文字を表します。

*正規表現の数量詞です。これは、関連付けられた式文字が0回以上出現することを意味します。

于 2012-11-04T05:59:07.313 に答える
2

matchesパラメータとして正規表現文字列を取り(.*)、任意の文字を0回以上貪欲にキャプチャすることを意味します

于 2012-11-04T05:58:13.430 に答える
2

.*任意の文字の0個以上のグループを意味します

于 2012-11-04T05:59:19.637 に答える
2

Regex

.

ワイルドカード: を除く任意の 1 文字に一致します。\n

たとえば、 inとin のパターンa.eマッチavenaveatewater

*

前の要素に 0 回以上一致する

たとえば、パターン\d*\.\dマッチ.019.9219.9

于 2012-11-04T08:14:16.327 に答える
0

を括弧で囲む理由はありません。また、すでにリテラルを取得している場合.*にインスタンス化する理由もありません。しかし、さらに悪いことに、この方法はここでは適切ではありません。StringStringmatches()

それが行うことは、文字列の最初から最後までの任意の文字を貪欲に照合することです。次に、 が見つかるまでバックトラックし"Tutorials"、その後、すべての文字 (改行を除く) に再び一致します。

findメソッドを使用する方がわかりやすく、より明確です。find メソッド"Tutorials"は String 内の最初のものを単純に検索"(.*)"し、パターンからその部分を削除できます。

便宜上、ワンライナーとして:

System.out.printf("Return value : %b%n", Pattern.compile("Tutorials").matcher("Welcome to Tutorialspoint.com").find());
于 2012-11-04T12:03:20.073 に答える