У меня есть такая команда: add "first item" and subtract "third course", disregard "the final power".
Как извлечь все строки, чтобы он выводил массив: ["first item", "third course", "the final power"]
Попробуйте использовать регулярное выражение, которое соответствует quote
, text
, quote
, а затем удалите захваченные цитаты, используя map
:
const string = 'add "first item" and subtract "third course", disregard "the final power".';
const quotes = string.match(/\"(.*?)\"/g).map(e => e.split("\"")[1]);
console.log(quotes);
Одно из решений - использовать глобальное регулярное выражение, подобное этому, и просто перебирать
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\""';
Если у вас есть это в вашем наборе данных, вам нужно будет адаптировать некоторые ответы.
Вы можете использовать это
"[^"] +? " - Соответствие "
за которым следует что-либо ожидаемое "
(один или более ленивый режим) с последующим "
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)
var str = 'add "first item" and subtract "third course", disregard "the final power".';
var res = str.match(/(?<=(['"])\b)(?:(?!\1|\\).|\\.)*(?=\1)/g);
console.log(res);
Ссылка: qaru.site/questions/46326/...