-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

两个问题:

  1. 正则表达式不正确,您只需要一个转义序列。模式是\rand \n,不是\\rand \\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 回答