我有这样的命令:add "first item" and subtract "third course", disregard "the final power".
如何提取所有字符串,以便输出一个数组:["first item", "third course", "the final power"]
答案 0 :(得分:2)
尝试使用与ByteString -> PublicKey
,quote
,text
匹配的正则表达式,然后使用quote
删除捕获的引号:
map
答案 1 :(得分:1)
一种解决方案是使用像这样的全局正则表达式,然后循环遍历
var extractValues = function(string) {
var regex = /"([^"]+)"/g;
var ret = [];
for (var result = regex.exec(string);
result != null;
result = regex.exec(string)) {
ret.push(result[1]);
}
return ret;
}
extractValues('add "first item" and subtract "third course", disregard "the final power".')
但是,请注意,大多数答案(包括该答案)都没有涉及值中可能带有引号的事实。例如:
var str = 'This is "a \"quoted string\""';
如果您的数据集中有此内容,则需要调整一些答案。
答案 2 :(得分:0)
var str = 'add "first item" and subtract "third course", disregard "the final power".';
var res = str.match(/(?<=(['"])\b)(?:(?!\1|\\).|\\.)*(?=\1)/g);
console.log(res);
答案 3 :(得分:0)
您可以使用
“ [^”] +?“ -匹配"
,后跟任何期望"
(一个或多个时间延迟模式)由"
let str = `add "first item" and subtract "third course", disregard "the final power"`
let op = str.match(/"[^"]+?"/g).map(e=>e.replace(/\"/g, ''))
console.log(op)