заменить только последнее совпадение строки preg на preg_replace? - PullRequest
1 голос
/ 29 апреля 2019

только изображения

$content="}
}
hello world
          }
}"
$text='}\s*[\r\n]*\s*[\r\n]*\s*}';
$ss="~$text(?!.*$text)~";
$res=preg_replace($ss,'replacement',content);
echo $res;//$res:"replacement hello world replacement"

Я хочу заменить только последний '}}, используя preg_replace ()

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

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

}\s*}(?![^}]*})$
  • }\s*} Совпадение }, 0+ пробельных символов, затем }
  • (?![^}]*}) Отрицательный взгляд, утверждаю, что справа больше нет случаев ]
  • $ Утверждение конца строки

Обратите внимание, что здесь не учитывается скобка баланса, только последняя до }

Regex demo

0 голосов
/ 29 апреля 2019
    $content="}}hello world}}";
    $text='}\s*[\r\n]*\s*[\r\n]*\s*}';
    $ss="~$text(?!.*$text)~";
    $res=preg_replace($ss,'replacement',$content);
    print_r($res);exit;

Выход:

   }}hello worldreplacement
...