如何拆分字符串而不丢失任何单词?

时间:2015-04-01 02:26:05

标签: java regex string split

我正在使用Eclipse for Java,我希望在不丢失任何字符的情况下拆分输入行。

例如,输入行是:

IPOD6 1 USD6IPHONE6 16G,64G,128G USD9,USD99,USD999MACAIR 2013-2014 USD123MACPRO 2013-2014,2014-2015 USD899,USD999

,所需的输出是:

IPOD6 1 USD6
IPHONE6 16G,64G,128G USD9,USD99,USD999
MACAIR 2013-2014 USD123
MACPRO 2013-2014,2014-2015 USD899,USD999

我使用的是split("(?<=\\bUSD\\d{1,99}+)"),但它无法正常使用。

2 个答案:

答案 0 :(得分:1)

不要太复杂,请使用此模式

(?=IPOD|IPHONE|MAC)

并用新线替换
现在它很容易捕获或分裂成阵列
Demo


或者这种模式

((USD\d+,?)+)

并替换w / $1\n
Demo

答案 1 :(得分:1)

您只需要在正面后方中添加一个非单词边界\B\B匹配两个非单词字符或两个单词字符之间。它不会在此USD9子字符串中USD9,和逗号之间存在的边界上分割,因为USD9和逗号之间存在单词边界,因为9是单词字符{{{ 1}}是一个非单词字符。它在,USD6之间存在的边界上分裂,因为这些子串之间存在非字边界IPHONE6,因为\B是一个单词字符{{1}也是一个单词字符。

6

<强>输出:

I