1

我想检查 Java 正则表达式中的多行文本。但它总是显示错误的结果。谁能解释我为什么?

例如:

11  12
11  12
11  12

为了测试这些行,我使用11 12\r?\n+. 它在 rubular 正则表达式检查器中运行良好,但在http://www.regexplanet.com/advanced/java/index.html中失败。我尝试过的另一种选择是(11 12.\r?\n){3,7},它在 rubular regex 检查中运行良好,但在 regexplanet Java 中失败。谁能告诉我如何检查这种具有重复模式的正则表达式?

4

1 回答 1

2
11 12\r?\n+

匹配11 12,后跟一个可选的回车符,然后是一个或多个换行符(没有回车符)。这显然不是你想要的。

(11 12.\r?\n){3,7}

匹配11 12,后跟一个除换行符以外的附加字符,后跟可选的 CR 和换行符;所有这些都重复 3 到 7 次。所以这里的点是错误的。改用这个:

(11 12\r?\n){3,7}

最后,请注意,由于字符串转义规则,您通常需要在 Java 正则表达式中使用双反斜杠(尽管在这种特殊情况下,您会没事的,因为\r并且\n碰巧也可以用作字符串转义):

Pattern regex = Pattern.compile("(11 12\r?\n){3,7}");  // works the same as
Pattern regex = Pattern.compile("(11 12\\r?\\n){3,7}");
于 2013-03-04T06:36:11.500 回答