我想在每个空格字符处拆分一个String,但将引用的部分分开拆分。 我尝试使用正则表达式模式
",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"
并将commas ","
替换为space " " or "\\s"
"\\s(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"
,并且在以下示例中工作正常:
输入:"foo \"bar foo\" bar"
输出:[foo, "bar foo", bar]
但是如果删除内引号之前和之后的空格,则会得到以下内容:
输入:"bar foo\"bar foo\"bar foo"
输出:["bar", "foo\"bar foo\"bar", "foo"]
所需的输出:["bar", "foo", "\"bar foo\"", "bar", "foo"]
@ the-fourth-bird友好地创建了以下正则表达式
"(?:\\h|(?=\")|(?<=\"))(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"
在上述情况下有效,但在空格情况下无效:
输入:"foo \"bar foo\" bar"
输出:["foo", "", "\"bar foo\"", "bar"]
所需的输出:["food", "\"bar foo\"", "bar"]
可以通过仅从数组中删除空字符串来解决此问题,但是在正则表达式中还有解决此问题的方法吗?
非常感谢您的帮助!
答案 0 :(得分:0)
我找到了一个简单的解决方案,适用于我的情况:
/[^"\s]+|"[^"]*"/