Regex: захватить текст внутри моего тега - PullRequest
0 голосов
/ 30 июня 2018

Я работаю над NodeJS для чтения текста внутри файлов, но я не очень разбираюсь в регулярных выражениях для захвата строки, поэтому я прошу помощи.

Пример текста:

text text {{ 'translate me' | lang }} text {{ 'A' | replace('A', 'B') }} {{"another text"|lang}}

Я хочу взять текст только внутри {{' ЧТО-ТО ' | lang}}

выход

['translate me', 'another text']

Итак, как использовать Regex для захвата, спасибо.

О, также он должен поддерживать некоторый интервал, например

  • {{'переведите меня' | lang}}
  • {{'translate me' | lang}}
  • {{'translate me' | lang}}
  • {{'переведите меня' | lang}}

Также поддержка "и" (одинарные и двойные кавычки)

  • {{"переведите меня" | lang}}

1 Ответ

0 голосов
/ 30 июня 2018

Два открывающих курсива, за которыми следуют ноль или более пробелов, за которыми следует строка в кавычках, за которым следуют ноль или более пробелов, за которыми следуют |, lang и два закрывающих курсора с использованием (нового) lookbehind:

const text = "text text {{ 'translate me' | lang }} text {{ 'A' | replace('A', 'B') }} {{ 'another text' | lang }}";
console.log(text.match(
  /(?<=\{\{ *')[^']+(?=' *\| *lang *}})/g
));

// or, without lookbehind:

const re = /\{\{ *'([^']+)(?=' *\| *lang *}})/g;
let match;
const matches = [];
while ((match = re.exec(text)) !== null) {
  matches.push(match[1]);
}
console.log(matches);
...