Java 正则表达式 - 按空格拆分字符串 - 忽略引号和转义引号中的空格
Java Regex - Split string on spaces - Ignore spaces in quotes and escaped quotes
我正在寻找正则表达式以在 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})*\"
谢谢!
这样的正则表达式适用于简单的情况:
("(.+?)(?<![^\]\)")|\S+
但我不建议使用 RegEx 来完成此任务,而是查看 CSV 解析器。
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]
'拆分'。
此时你可以做
var0 = split[0];
var1 = split[1];
var2 = split[2];
其中 var0
等于 "This"
等等...
希望这对您有所帮助。
我正在寻找正则表达式以在 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})*\"
谢谢!
这样的正则表达式适用于简单的情况:
("(.+?)(?<![^\]\)")|\S+
但我不建议使用 RegEx 来完成此任务,而是查看 CSV 解析器。
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]
'拆分'。
此时你可以做
var0 = split[0];
var1 = split[1];
var2 = split[2];
其中 var0
等于 "This"
等等...
希望这对您有所帮助。