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

标签 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}+)")但它不起作用。

最佳答案

您只需在正向后查找内添加一个非单词边界 \B 即可。 \B 匹配两个非单词字符之间或两个单词字符之间。它不会在 USD9, 子字符串中的 USD9 和逗号之间存在的边界上进行拆分,因为 USD9USD9 之间存在单词边界逗号,因为 9 是单词字符,而 , 是非单词字符。它在 USD6IPHONE6 之间存在的边界上进行分割,因为自 起这些子字符串之间存在非单词边界 \B 6 是一个单词字符,I 也是一个单词字符。

String s = "IPOD6 1 USD6IPHONE6 16G,64G,128G USD9,USD99,USD999MACAIR 2013-2014 USD123MACPRO 2013-2014,2014-2015 USD899,USD999";
String[] parts = s.split("(?<=\\bUSD\\d{1,99}+\\B)");
for(String i: parts)
{
    System.out.println(i);
}

输出:

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

关于java - 如何拆分字符串而不丢失任何单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381853/

相关文章:

java - 如何在 Apache Flink 中注册 java.util.List 类型

regex - HTML5 输入模式搜索报价

python - 使用 Python 拆分 ps 的输出

string - 如何仅将元音从大写更改为小写,反之亦然 (MATLAB)

java - 字符串等于方法

java - Android 未处理的异常 : org. json.JSONException with ion

java - 如何为 org.quartz.JobDetail 创建自定义编辑器?

java - String.split() 返回一个带有附加空值的数组

javascript - 如何删除所有非字母字符,javascript

java - 我想使用 swing mysql 插入数据