我正在寻找正则表达式来在 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 解析器。
关于Java Regex - 按空格分割字符串 - 忽略引号和转义引号中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37082706/