Найдите строки в кавычках
Создайте регулярное выражение для поиска строк в двойных кавычках "...".
Важно, что строки должны поддерживать экранирование с помощью обратного слеша, по аналогии со строками JavaScript. Например, кавычки могут быть вставлены как \", новая строка как \n, а сам обратный слеш как \\.
let str = "Как вот \"здесь\".";В частности, обратите внимание: двойная кавычка после обратного слеша \" не оканчивает строку.
Поэтому мы должны искать от одной кавычки до другой, игнорируя встречающиеся экранированные кавычки.
В этом и состоит основная сложность задачи, которая без этого условия была бы элементарной.
Примеры подходящих строк:
.. "test me" ..
.. "Скажи \"Привет\"!" ... (строка с экранированными кавычками)
.. "\\" ..  (внутри двойной слеш)
.. "\\ \"" ..  (внутри двойной слеш и экранированная кавычка)В JavaScript приходится удваивать обратные слеши, чтобы добавлять их в строку, как здесь:
let str = ' .. "test me" .. "Скажи \\"Привет\\"!" .. "\\\\ \\"" .. ';
// эта строка в памяти:
alert(str); //  .. "test me" .. "Скажи \"Привет\"!" .. "\\ \"" ..Решение: /"(\\.|[^"\\])*"/g.
Шаг за шагом:
- Сначала ищем открывающую кавычку "
- Затем, если есть обратный слеш \\(удвоение обратного слеша – техническое, потому что это спец.символ, на самом деле там один обратный слеш), то после него также подойдёт любой символ (точка).
- Иначе берём любой символ, кроме кавычек (которые будут означать конец строки) и обратного слеша (чтобы предотвратить одинокие обратные слеши, сам по себе единственный обратный слеш не нужен, он должен экранировать какой-то символ) [^"\\]
- …И так далее, до закрывающей кавычки.
В действии:
let regexp = /"(\\.|[^"\\])*"/g;
let str = ' .. "test me" .. "Скажи \\"Привет\\"!" .. "\\\\ \\"" .. ';
alert( str.match(regexp) ); // "test me","Скажи \"Привет\"!","\\ \""