拆分reg表达式

问题描述:

我想如下拆分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的额外换行符,但你应该得到3,因为你的正则表达式匹配关闭]和开放[,所以它分裂两次] [。 研究表达式是否贪婪。

也许这将是固定的还包括] [在你的表情,也许像这样: "[\\[\\]]+"

具有+会有使表达式的外观尽可能多的支架彼此相邻越好。所以它只会在][分割一次,因为][与表达式匹配。

Read this如果你有兴趣了解正则表达式的贪婪和懒惰。

(编辑:)此外,80后,你一定会得到:以及。如果你不想这样做,请相应地调整你的正则表达式。 (你确实需要冒号后复杂,所以你不能只是在范围内添加冒号) 类似这样的:"[\\[\\]]+:?[\\[\\]]*"

+0

感谢您的意见为我工作 –

+0

不客气!如果您希望最终获得预期的输出结果并且没有冒号,请阅读我的编辑。 – Rick