拆分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后,你一定会得到:
以及。如果你不想这样做,请相应地调整你的正则表达式。 (你确实需要冒号后复杂,所以你不能只是在范围内添加冒号) 类似这样的:"[\\[\\]]+:?[\\[\\]]*"
感谢您的意见为我工作 –
不客气!如果您希望最终获得预期的输出结果并且没有冒号,请阅读我的编辑。 – Rick