最终,我试图将这个转化为:
var msg = '-m "this is a message" --echo "another message" test arg';
将其转换为:
[
'-m',
'this is a message',
'--echo',
'another message',
'test',
'arg'
]
我不太确定如何解析字符串以获得所需的结果。以下是我目前的代码:
var msg = '-m "this is a message" --echo "another message" test arg';
// remove spaces from all quoted strings.
msg = msg.replace(/"[^"]*"/g, function (match) {
return match.replace(/ /g, '{space}');
});
// Now turn it into an array.
var msgArray = msg.split(' ').forEach(function (item) {
item = item.replace('{space}', ' ');
});
我认为那会起作用,但是那看起来像是一种靠运气且不切实际的方法来达到我的目的。我相信你们有比在分割之前创建占位符字符串更好的方法。
[^"]*
,否则该表达式将匹配第一个和最后一个引号之间的整个字符串。 - Chev