PHP регулярные выражения соответствуют всем, но не содержат символов - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь получить совпадение всех значений с /{ any string not contain "/" and "{" and "}" inside }/

Мой партнер \/\{((?!\/).)*\}\/

И моя тестовая строка /a/{bb}/{d{b}}/{as}df}/b{cb}/a{sdfas/dsgf}

Но мой результат

array(2
    =>  array(2
    =>  /{bb}/
    =>  /{as}df}/
      )
    =>  array(2
    =>  b
    =>  f
        )
)

Я хочу, чтобы только результат был /{bb}/, а значение было bb Как это сделать спасибо.

Ответы [ 2 ]

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

Я настоятельно рекомендую вам использовать https://regex101.com/ веб-сайт для тестирования и отладки вашего регулярного выражения

это регулярное выражение будет работать для вас: (? <= /) {([^ / {}] +?)} (? = /) </p>

screenshot of regex101 website

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

Вы можете попробовать этот помощник

(?<=\/){[^\/{}]*?}(?=\/)

Объяснение

  • (?<=\/) - положительный взгляд позади.Совпадения /
  • { - Совпадения {.
  • [^\/{}]*? - Совпадение всего, кроме { и } и / ноль или более времени (ленивый режим)).
  • (?=\/) - Матчи /.

Вы также можете использовать это \/({[^\/{}]*?})\/

Демо

...