2016-12-02 25 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

相關問題