Regex извлекает символы между двумя строками, включая разделители - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь извлечь текст между двумя символами, включая разделители, но возвращается только текст без разделителя:

.+(?<=\()(.*?)(?=\))

См. текущую демонстрацию регулярных выражений .

Пример:
Some text (1990) (//Divulgação)

Должен вернуться: (//Divulgação) (не //Divulgação)

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете извлечь эти подстроки между ( и ), используя

preg_match('~.*\K\([^()]*\)~s', $s, $matches)

См. Демонстрационный пример regex .

Подробности

  • .* - любые 0+ символов, как можно больше
  • \K - оператор сброса совпадений, который отбрасывает сопоставленный текст так далеко от буфера совпадений
  • \( - ( символ
  • [^()]* - 0+ символов, отличных от ( и )
  • \) - ) символ.
...