Идентификатор Preg_match

Я хочу получить совпадение с моим идентификатором.

У меня есть такая строка в {/describe:foo}, где я пытаюсь сопоставить {/describe:}, чтобы вернуть foo, но я не правильно понимаю регулярное выражение, не мог бы кто-нибудь указать, что я сделал неправильно? вот мой матч.

$regexp = '/\{describe:(.*?)\}/i';
$query  = '{/describe:foo}'; 
preg_match($regexp, $query, $match);

print_r($match); // (bool) false

Предыстория Я надеюсь, что это может помочь другим, веская причина для этого — создать заменяемые управляющие слова в строке, которую можно интерпретировать и заменить, вот пример плаката RESTful, который будет запускать дескриптор на контрольное слово.

  if (preg_match('/\{describe:(.*?)\}/i', $_POST['query'], $match))
  {
        // Describe Salesforce Object from internal POST tool
        print_r($SforceConnection->describeSObjects($match[1]));
        exit;
  }

person ehime    schedule 20.03.2013    source источник


Ответы (3)


Вам не хватает косой черты в регулярном выражении:

$regexp = '/\{\/describe:(.*?)\}/i';

or:

$regexp = '#\{/describe:(.*?)\}#i';
person jeroen    schedule 20.03.2013

Проще говоря, вы могли бы использовать это: (?<=\/describe:).*(?=})

person Daedalus    schedule 20.03.2013
comment
Выбрасывает unknown modifier . просто один на один - person ehime; 20.03.2013
comment
Обычно я не считаю обходы самыми простыми :) - person Adrian; 20.03.2013
comment
@ Адриан - Верно ... Я больше собирался просто взять полное совпадение, без подшаблона. - person Daedalus; 20.03.2013
comment
@ehime - интересно ... я запускал его через RegExr, но на самом деле не запускал через PHP. - person Daedalus; 20.03.2013
comment
@Daedalus, в этом может быть проблема, я знаю, что разновидность регулярных выражений в PHP - это PCRE, что могло повлиять на результат вашего запроса php.net/manual/en/book.pcre.php - person ehime; 20.03.2013

Попробуйте (/похоже, отсутствует перед описанием):

$regexp = '/\{/describe:(.*?)\}/i'
person LaGrandMere    schedule 20.03.2013
comment
Косые черты являются разделителями регулярных выражений и являются обязательными (ну, требуется какой-то разделитель, это не обязательно должны быть косые черты) - person Adrian; 20.03.2013
comment
@Adrian Адриан отредактировал мой пост, в его регулярном выражении отсутствует /before describe. - person LaGrandMere; 20.03.2013