Java Regex - 在空格上拆分字符串 - 忽略引号和转义引号中的空格

时间:2016-05-06 23:17:45

标签: java regex split escaping quote

我正在寻找正则表达式在Java中执行以下操作:

String originalString = "";
String splitString[] = originalString.spilt(regex);

一些测试用例:

Original1: foo bar "simple"
Spilt1: { "foo", "bar", "\"simple\"" }

Original2: foo bar "harder \"case"
Spilt2: { "foo", "bar", "\"harder \"case\"" }

Original3: foo bar "harder case\\"
Spilt3: { "foo", "bar", "\"harder case\\"" }

我遇到的一些片段:

# Does not react to escaped quotes
 (?=([^\"]*\"[^\"]*\")*[^\"]*$)
# Finds relevant quotes that surround args
(?<!\\)(?:\\{2})*\"

谢谢!

2 个答案:

答案 0 :(得分:1)

像这样的正则表达式适用于简单的情况:

("(.+?)(?<![^\\]\\)")|\S+

但是我不建议使用RegEx来完成这项任务,而是看看CSV解析器。

答案 1 :(得分:0)

String stringToSplit = This is the string to split;

String[] split = stringToSplit.split("character to split at");

在这种情况下,split[0]会导致&#39;这个&#39;,split[1]将是&#39;是&#39;,split[2]将是&#39; &#39;,split[3]&#39;字符串&#39; split[4]&#39;到&#39; split[5]&#39;分裂&#39;。

此时你可以做到

var0 = split[0];
var1 = split[1];
var2 = split[2];

var0等于&#34;这个&#34; 等等...

希望这会有所帮助。