Получить строки с регулярным выражением - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть такая команда: add "first item" and subtract "third course", disregard "the final power".

Как извлечь все строки, чтобы он вывел массив: ["first item", "third course", "the final power"]

Ответы [ 4 ]

0 голосов
/ 02 февраля 2019

Одним из решений является использование глобального регулярного выражения, подобного этому, и просто переберите

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\""';

Если у вас это есть в наборе данных, вам нужно будет адаптировать некоторые ответы.

0 голосов
/ 02 февраля 2019

Попробуйте использовать регулярное выражение, соответствующее 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);
0 голосов
/ 02 февраля 2019

Вы можете использовать это

"[^"] +? " - Совпадение ", за которым следует что-нибудь ожидающее " (один или несколько разленивый режим) с последующим "

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)
0 голосов
/ 02 февраля 2019
var str = 'add "first item" and subtract "third course", disregard "the final power".'; 
var res = str.match(/(?<=(['"])\b)(?:(?!\1|\\).|\\.)*(?=\1)/g);
console.log(res);

Ссылка: Решение Казимира и Ипполита о Stackoverflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...