在我的情况下连续两个事物的正则表达式

时间:2017-03-06 15:58:35

标签: java regex

什么是正则表达式恰好匹配两个连续的制表符和新的行符号。 \t\n\t\n?我正在使用Java。

2 个答案:

答案 0 :(得分:4)

Java 8支持将\R用作Linebreak matcher,以匹配任何Unicode换行序列

所以你可以像这样使用它:

String str = "\t\r\n\t\r\n";
System.out.printf("Matched: <%s>%n", str.matches("(?:\\t\\R){2}"));

str = "\t\n\t\n";
System.out.printf("Matched: <%s>%n", str.matches("(?:\\t\\R){2}"));

由于我们在matches()方法中使用此正则表达式,因此它仅匹配完整的字符串输入。

<强>输出:

Matched: <true>
Matched: <true>

答案 1 :(得分:2)

您的表达式将匹配\t\n\t\n,即使它是更长序列的一部分,即不是连续两次出现。

如果您想匹配恰好两个\t\n s的序列,请使用负面外观:

(?<!\t\n)(\t\n){2}(?!\t\n)

请注意使用括号和{2},它可以避免多次输入相同的序列。