1

我想做的是取双线的左右部分。例子

LEFT_PART\r\n\r\nRIGHT_PART

左右部分可以是任何东西,但它们不会包含双新行。我正在做的事情不起作用(与我给它的字符串不匹配)。这是我到目前为止所做的。

^(.*)[\r\r|\n\n|\r\n\r\n]{1,1}(.*)$

它可以从任何东西开始,紧接着是一个双换行,然后是任何东西。我将左右分组,因为我需要使用它们。

编辑我使用 OR 来涵盖所有三种类型的换行符

4

4 回答 4

2

方括号用于字符类而不是分组。尝试使用括号:

^(.*)(\r\r|\n\n|\r\n\r\n)(.*)$

并避免捕获双换行符;

^(.*)(?:\r\r|\n\n|\r\n\r\n)(.*)$

{1,1}也是多余的。我删除了它。

于 2013-09-05T06:48:04.467 回答
1

尝试下一个:

^(.*)(?:(\r|\r?\n){2})(.*)$
于 2013-09-05T13:32:29.147 回答
1

它不起作用,因为您使用了一个字符类,它只匹配一个字符。你应该使用括号。此外,您可以使用{n}量词简化正则表达式。要匹配\r\r,请使用\r{2}

^(.*)(?:\r|\n|\r\n){2}(.*)$  

除此之外,我宁愿使用以下方法为我的系统获取行分隔符:

String lineSeparator = System.getProperty("line.separator");
String regex = "^(.*)" + Pattern.quote(lineSeparator) + "{2}(.*)$  
于 2013-09-05T06:47:48.953 回答
1

尝试这个:

(?m)^(.*)$[\r\n]{1,2}^$[\r\n]{1,2}^(.*)$

该开关(?m)的效果是插入符号和美元在换行符之后和之前匹配正则表达式的其余部分

这是此正则表达式工作的现场演示

于 2013-09-05T06:49:43.143 回答