2017-07-24 107 views
0

我想如下拆分reg表達式

String str="COMPLEX:[A(100),B(0)][80]:[B(100),A(0)][20]"; 
String [] tokens = str.split("[\\[\\]]"); 

總產值有望拆分一個字符串:

COMPLEX: 
A(100),B(0) 
80 
B(100),A(0) 
20 

但上述拆分功能REG EPX給了我額外的新線路輸出像

[0]->COMPLEX: 
[1]-> 
[2]->A(100),B(0) 
[3]-> 
[4]->80 so on 

如何消除多餘的線?

回答

1

你不應該得到1的額外換行符,但你應該得到3,因爲你的正則表達式匹配關閉]和開放[,所以它分裂兩次] [。 研究表達式是否貪婪。

也許這將是固定的還包括] [在你的表情,也許像這樣: "[\\[\\]]+"

具有+會有使表達式的外觀儘可能多的支架彼此相鄰越好。所以它只會在][分割一次,因爲][與表達式匹配。

Read this如果你有興趣瞭解正則表達式的貪婪和懶惰。

(編輯:)此外,80後,你一定會得到:以及。如果你不想這樣做,請相應地調整你的正則表達式。 (你確實需要冒號後複雜,所以你不能只是在範圍內添加冒號) 類似這樣的:"[\\[\\]]+:?[\\[\\]]*"

+0

感謝您的意見爲我工作 –

+0

不客氣!如果您希望最終獲得預期的輸出結果並且沒有冒號,請閱讀我的編輯。 – Rick