Получить строки с регулярным выражением

1

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

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

  • 4
    что вы пробовали?
  • 0
    Используйте регулярное выражение, которое соответствует двойным кавычкам, последовательности символов, не являющихся двойными кавычками, и другой двойной кавычки.
Показать ещё 3 комментария
Теги:
arrays

4 ответа

2
Лучший ответ

Попробуйте использовать регулярное выражение, которое соответствует 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);
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\""';

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

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)
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);

Ссылка: qaru.site/questions/46326/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню