Java Regex - 按空格分割字符串 - 忽略引号和转义引号中的空格

标签 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})*\"

谢谢!

最佳答案

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

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

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

关于Java Regex - 按空格分割字符串 - 忽略引号和转义引号中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37082706/

相关文章:

python - 按条件从字符串中提取数字

C#编程如何通过正则表达式对空格和 ","进行分词?

regex - Nodemon 使用正则表达式忽略文件夹

Jquery通过读取html内容拆分列

string - 即使最后一个字符是定界符也拆分字符串

java - 我尝试访问下一行并使用stream.reduce.not 能够实现它并与 java arraylist 对象中的当前行进行比较,但出现错误

java - 跨移动平台共享代码

audio - 在 Spotify 音轨更改时在 Audio Hijack Pro 中拆分录音 (Applescript)

java - 用零填充字符串

java - 如何删除一个元素并将其添加到 ArrayList 的末尾?