仅当分隔符被引号括起时,才在Java中拆分字符串

时间:2015-07-29 18:06:59

标签: java regex string split

假设我有以下字符串:

"John Doe","IT,SI","foo, bar"

我想把它分成:

["John Doe", "IT,SI", "foo, bar"]

我正在考虑实施这样的事情:

String line = "\"John Doe\",\"IT,SI\",\"foo, bar\"";
String[] lineItems = line.split("\",\"");

for (String lineItem : lineItems) {
    lineItem.removeAll("\"");
}

这样做,但这似乎不是一种艺术状态。有更好的解决方案吗?

4 个答案:

答案 0 :(得分:1)

以下正则表达式适用于此案例。

String[] lineItems = line.split("(?<=\"),(?=\")");

答案 1 :(得分:1)

以下内容应解决问题

line.split("(?<=\"),(?=\")") 

答案 2 :(得分:0)

你想要双引号之间的单词,而不是拆分字符串,你可以使用后面的正则表达式来提取它们:

/"([^"]+)"/g

请参阅演示https://regex101.com/r/hC3cW2/1

答案 3 :(得分:0)

(\b[^"]+)

或者您也可以将其命名为:

(?P<names>\b[^"]+)
OR
(?<names>\b[^"]+)

不确定java支持P&lt;&gt;或&lt;&gt;