PCRE соответствует одному символу между фигурными скобками - PullRequest
0 голосов
/ 06 декабря 2018

Я пишу PCRE, пытаясь сопоставить знаки доллара ($), только если они находятся между фигурными скобками.

Мой пример текста выглядит так: Lorem $100 ipsum dolor {value$banana} sit $500 amet.

Шаблон(?<=\{)(.*?)(?=\}) дает мне все между фигурными скобками ({value$banana}), но мне нужно точно соответствовать знаку доллара между ними.Мне не нужен шаблон, совпадающий с несколькими вхождениями.

Я пытался работать над этим, но нигде не мог найти ответ.Заранее спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Если вы хотите сопоставить только одну $ внутри фигурных скобок, только один раз вы можете использовать

'~\{[^{}$]*\K\$(?=[^{}]*})~'

См. Демонстрационную версию regex

Подробности

  • \{ - { символ
  • [^{}$]* - 0 или более символов, отличных от {, } и $
  • \K - оператор сброса совпадений отбрасывает весь сопоставленный текст так далеко от буфера памяти совпадений
  • \$ - $ char
  • (?=[^{}]*}) - положительный прогноз, который требует присутствия любых 0+ символов, кроме { и }, а затем } непосредственно справа от текущего местоположения.
...