2016-12-02 47 views
1

我想分成两个部分文字,从一开始就一个,直到第一断线之后,它的其余部分在Windows下使用Eclipse简单的regex在Windows上工作,而不是在Linux中使用Java

String[] result = resumen.split("\\R", 2); 
String firstpart = result[0]; 
String rest = result[1]; 

工作正常。

但在Linux机器上,我发现了错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 1 
\R 

所以我读的地方上,这样我可以使用:

String[] result = resumen.split("\\\\R", 2); 

但作为预期,这还不行不分裂这句话。

我该如何调整代码才能在Linux机器上工作呢?

在此先感谢。

+1

另请参见[*在Java中的RegEx:如何处理新行*](http://stackoverflow.com/a/3445417/3832970)。 –

回答

6

听起来像Linux机器有一个旧版本的Java,并在该版本后添加\R

\RJava 8。这不是在Java 7

如果您需要支持Java 7,则文档说\R相当于\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]

所以基于这样:

String[] result = resumen.split("\\u000D\\u000A|[\\u000A\\u000B\\u000C\\u000D\\u0085\\u2028\\u2029]", 2); 

,但我认为我们是好的,如果我们提供这些字符的正则表达式引擎为文字字符,而不是Unicode转义字符,所以:

String[] result = resumen.split("\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]", 2); 

(但测试)

+0

'\ N'应该工作,然后 – XtremeBaumer

+1

@XtremeBaumer:若目标是匹配换行符跨平台的。 –

+0

什么平台\ n不工作? – XtremeBaumer

相关问题