Java正则表达式中的EOL

时间:2013-03-25 19:01:17

标签: java regex

为什么在Java中使用regex库,可以在下一个命令中找到EOL

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

2 个答案:

答案 0 :(得分:5)

这不是新行正则表达式。您确实在以下字符中匹配以下字符之一或多次:\r\n$。在where中,有一个r,因此模式可以在字符串中找到。

新行正则表达式为\r|\n|\r\n。在JAVA中,您需要转义反斜杠,因此它将是\\r|\\n|\\r\\n

答案 1 :(得分:0)

两个问题:

  1. 正则表达式不正确,您只需要一个转义序列。模式为\r\n,而不是\\r\\n。在Java中,您需要将它们转义一次,因此模式为\\r\\n
  2. 您要搜索的字符串(" where ")不包含任何回车符+换行符(只有\ r \ n)。
  3. 这将找到回车符+换行符:

    Matcher matcher = Pattern.compile( "[\\r\\n$]+" ).matcher( " where \n" );
    if ( matcher.find() ){
        System.out.println("found");
    }