Javaの正規表現ライブラリでEOLが次のコマンドにある理由
Matcher matcher = Pattern.compile( "[\\\\r\\\\n$]+" ).matcher( " where " );
if ( matcher.find() )
{
// found reaction
}
これは改行正規表現ではありません。次の文字のいずれかを文字通り1回以上一致させています:\
、、、、または。には、があるので、パターンは文字列にあります。r
\
n
$
where
r
改行正規表現は\r|\n|\r\n
です。JAVAでは、円記号をエスケープする必要があるため、になります\\r|\\n|\\r\\n
。
2つの問題:
\r
と\n
、ではなく\\r
、\\n
です。Javaでは、それらを一度エスケープする必要があるため、パターンはと\\r
です\\n
。" where "
、キャリッジリターンと改行が含まれていません(\ rのみ)。これにより、キャリッジリターンとラインフィードが見つかります。
Matcher matcher = Pattern.compile( "[\\r\\n$]+" ).matcher( " where \n" );
if ( matcher.find() ){
System.out.println("found");
}