Как получить весь контент между двумя фигурными скобками, игнорируя те, что в кавычках? - PullRequest
0 голосов
/ 15 октября 2019

В настоящее время я использую следующее регулярное выражение с частичным успехом:

/\{[^{}]+\}/g

Но в этой ситуации это не удается:

{get('{')} {b} {abc'}'d}

Я просто хочу игнорировать { и} когда они находятся между кавычками и получают правильный результат:

get('{')

и

b

и

abc'}'d

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете использовать это регулярное выражение для захвата внутренних строк в обоих случаях:

\{((?:[^{}']*'[^']*')*[^{}']*)\}

При условии, что кавычки сбалансированы и не экранированы.

RegEx Demo

Подробности RegEx:

  • \{: совпадение {
  • (: запуск группы захвата # 1
    • (?:: создать группу без захвата
      • [^{}']*: сопоставить 0 или более символов, которые не { и не } и не '
      • ': Соответствует одной кавычке
      • [^']*: соответствует 0 или более любому символу, который не является '
      • ': соответствует одной кавычке
    • )*: конец группы без захвата. Совпадение 0 или более из этой группы
    • [^{}']*: Совпадение 0 или более символов, которые не { и не } и не '
  • ): конец группы захвата # 1
  • \}: соответствует }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...