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

我正在寻找正则表达式在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})*\" 

谢谢!

 String stringToSplit = This is the string to split; String[] split = stringToSplit.split("character to split at"); 

在这种情况下, split[0]将导致’This’, split[1]将是’is’, split[2]将是’the’, split[3]split[4] ‘将导致’ split[5]split[5] ‘分裂’。

此时你可以做到

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

其中var0等于“This”等等……

希望这可以帮助。

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

 ("(.+?)(? 

但我不建议使用RegEx执行此任务,而是查看CSV解析器。