使用正则表达式获取字符串

时间:2019-02-02 02:01:45

标签: javascript arrays regex

我有这样的命令:add "first item" and subtract "third course", disregard "the final power".

如何提取所有字符串,以便输出一个数组:["first item", "third course", "the final power"]

4 个答案:

答案 0 :(得分:2)

尝试使用与ByteString -> PublicKeyquotetext匹配的正则表达式,然后使用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);

参考:Casimir et Hippolyte's solution on Stackoverflow

答案 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)