1

次のコードがあります。

String myString;
boolean myResult;

myString = "First\nSecond\nThird\nFourth";
myResult = myString.matches("First.*");
myResult = myString.matches(".*First.*");
myResult = myString.matches(".*Second.*");
myResult = myString.matches("First\nSecond\nThird\nFourth");

最後のものはtrueを返し、残りはすべてfalseを返します...

上記の式はすべてtrueを返しますが。また、「First」で始まる文字列を見つける必要があります。最初の.matches()でカバーできると思いましたが、カバーしていません。それはどのように見えるべきですか?

4

4 に答える 4

2

。*おそらく一致しません\n

最後の一致パターンの\nを。に置き換えます。何が起こるか見てみましょう。

于 2012-08-02T12:55:01.923 に答える
2

ドットはデフォルトでは行末文字と一致しませんが、正規表現文字列の前に(?s)を付けると、それら一致します。これにより、DOTALL一致フラグが有効になります。

于 2012-08-02T13:00:11.303 に答える
1

ドキュメントを参照してください:

。任意の文字(ラインターミネータと一致する場合と一致しない場合があります)

于 2012-08-02T12:57:48.957 に答える
1

文字通り\n\rを指定してみることができます。

myResult = myString.matches("First(.|[\n\r])*")
于 2012-08-02T13:06:29.937 に答える