Соответствие регулярному выражению {{> (lookup. 'Superman')}} - PullRequest
1 голос
/ 30 сентября 2019

Мне нужно регулярное выражение, которое приведет к следующему

С учетом этого обозначения:

{{> (lookup. 'needle')}}

Tt возвращает результат:

["needle"]

Я пробовал с этим,но все соответствует {{>\(.(.+?)}}

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Вы можете использовать использовать группу захвата и вместо не жадного квантификатора .+? использовать отрицательный класс символов

{{>\h*\([^(']+'([^')]+)'\)}}
  • {{>Матч {{>
  • \h* Матч 0+ горизонтальных пробельных символов (или \h+ для 1 или более)
  • \([^(']+ Матч (, а затем 1+ раз с любым символом, кроме( или '
  • '( Совпадение ' и начало захвата группа 1
    • [^')]+ Совпадение 1+ раз с любым символом, кроме 'или )
  • )' Закрыть группу 1 и сопоставить '
  • \)}} Совпадение )}}

Regex demo

При замене используйте

["$1"]

Выход

["needle"]

Редактировать

Еслиlookup часть должна быть статической, вы можете обновить шаблон так:

{{>\h*\(lookup[^']+'([^')]+)'\)}}

Regex demo

0 голосов
/ 30 сентября 2019

Если обозначения будут точно такими же, как написано, {{> \(lookup\s*\. '(.*?)'\)}} должно решить вашу проблему. Он ищет буквальные версии всех ваших персонажей, а затем использует группу захвата для сбора только текста между ' отметками. (Обратите внимание, что это регулярное выражение нужно изменить, если текст захвата включает ' метки.)

Редактировать: регулярное выражение теперь соответствует любому количеству пробелов от lookup до .

Попробуй здесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...