Как извлечь текст между кавычками в Javascript регулярное выражение - PullRequest
1 голос
/ 13 января 2020

Как я мог бы сделать с регулярным выражением в javascript, чтобы извлечь то, что находится между кавычками, но без сохранения кавычек в результате.

Пример: My name is "Julian"

Результат: Я хочу Julian НЕ "Julian"

Спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 13 января 2020

Единственное предположение, которое я делаю, заключается в том, что между кавычками может быть что угодно, кроме другой кавычки:

/"([^"]*)"/

console.log('My full name is "John Doe"'.match(/"([^"]*)"/)[1]);

Если вы хотите поддержать экранированные кавычки, \", в тексте, а затем использовать следующее регулярное выражение для сопоставления:

/"((?:[^"]|(?<=\\)")*)"/

Здесь мы ищем любой символ, который не является " или ", которому предшествует \ (с использованием утверждения просмотра за спиной).

Но если мы получим совпадение, тогда мы должны отредактировать \ символов из \" вхождений:

let m = '"abc  \\"xyz\\""'.match(/"((?:[^"]|(?<=\\)")*)"/);
if (m) {
  let s = m[1].replace(/\\"/g, '"'); // remove the '\`, if any
  console.log(s)
}
2 голосов
/ 13 января 2020

Вы можете попробовать этот шаблон: "(\w+)"

console.log('My name is "Julian"'.match(/"(\w+)"/)[1]);
0 голосов
/ 13 января 2020

const regex = /\"(.*)\"/gm;
const str = `My name is "Julian"`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    //m.forEach((match, groupIndex) => {
    //    console.log(`Found match, group ${groupIndex}: ${match}`);
    //});

    // match without quotes are available in group with index '1'. 
    console.log(m[1])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...