2015-11-16 104 views
1

分割線,我需要創建正則表達式,將拆分第一行從文件中像這樣:如何使用正則表達式

Array[0] = 0 
Array[1] = 2 
Array[2] = 3 

下面是該文件的一個例子

0 > 2 3 
2 > 0 2 
0 > 1 1 
1 > 2 4 

我想這樣做這和它沒有這樣的空白字符0>2 3但我從我的老師聽到>之間的空間是必要的。

我的正則表達式:

String[] wartosci = line.split(">|\\s"); 

如何做到這一點?

+6

'String [] wartosci = line.split(「[> \\ s] +」);' –

+0

非常感謝。這是完美的工作 –

+1

任何人願意抓住上述評論,並將其作爲答案? –

回答

0

我認爲你需要拆分任何非數字。因此,使用

String results[] = s.split("\\D+"); 

IDEONE demo

這裏,\D+匹配1個或多個非數字字符。

Java demo

String s = "0 > 2 3"; 
String results[] = s.split("\\D+"); 
System.out.println(Arrays.toString(results)); 
// => [0, 2, 3] 

注意阿維納什的[>\\s]+是白名單的方式,如果你打算遵循它,你可能需要擴大與其他符號的字符類(如<=,甚至- ...

還有一些關於性能的字眼:你的>|\\s正則表達式使用了一個符號替換,它的效率遠低於一個字符類[>\\s],它會減少回溯(因爲它在「正則表達式內部程序」中被編譯成1個「實體」)。無論何時您想從一組字符中匹配1個符號,請使用character class