-2

Javaの正規表現ライブラリでEOLが次のコマンドにある理由

Matcher matcher = Pattern.compile( "[\\\\r\\\\n$]+" ).matcher( " where " );
if ( matcher.find() )
{
// found reaction
}
4

2 に答える 2

5

これは改行正規表現ではありません。次の文字のいずれかを文字通り1回以上一致させています:\、、、、または。には、があるので、パターンは文字列にあります。r\n$wherer

改行正規表現は\r|\n|\r\nです。JAVAでは、円記号をエスケープする必要があるため、になります\\r|\\n|\\r\\n

于 2013-03-25T19:05:49.373 に答える
0

2つの問題:

  1. 正規表現が正しくありません。必要なエスケープシーケンスは1つだけです。パッテンは\r\n、ではなく\\r\\nです。Javaでは、それらを一度エスケープする必要があるため、パターンはと\\rです\\n
  2. ()で検索している文字列には" where "、キャリッジリターンと改行が含まれていません(\ rのみ)。

これにより、キャリッジリターンとラインフィードが見つかります。

Matcher matcher = Pattern.compile( "[\\r\\n$]+" ).matcher( " where \n" );
if ( matcher.find() ){
    System.out.println("found");
}
于 2013-03-25T19:14:53.533 に答える