Php 预匹配标识符

Php 预匹配标识符,php,regex,preg-match,Php,Regex,Preg Match,我想从我的标识符中找到匹配项 我想在{/descripe:foo}中输入这样的字符串 匹配{/descripe:}以返回foo,但我没有获得正确的正则表达式,会吗 有人介意指出我做错了什么吗?这是我的对手 $regexp = '/\{describe:(.*?)\}/i'; $query = '{/describe:foo}'; preg_match($regexp, $query, $match); print_r($match); // (bool) false 背景 我希望这能帮助

我想从我的标识符中找到匹配项

我想在
{/descripe:foo}
中输入这样的字符串 匹配
{/descripe:}
以返回
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;
  }

您的regexp中缺少正斜杠:

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


最简单的说法是:
(?Try(
/
在描述之前似乎缺少):


斜杠是正则表达式分隔符,并且是必需的(很好,需要一些定界符,不必是斜线)。阿德里安编辑了我的帖子,在<代码> >在他的正则表达式中描述了,有一个丢失的<代码> /<代码>。抛出一个<代码>未知修改器。< />代码>一个头UPI通常不认为查找是“最简单的”:@阿德里安-真的。。。我更倾向于抓住一个完整的匹配,没有子模式。@ehime-有趣。。。我通过RegExr运行了它,但实际上并没有通过PHP运行它。@Daedalus这可能是问题所在,我知道PHP的regex风格是PCRE,这可能会影响您的查询结果
$regexp = '#\{/describe:(.*?)\}#i';
$regexp = '/\{\/describe\:(.*?)\}/i';
$query  = '{/describe:foo}';
preg_match($regexp, $query, $match);

print_r($match); // Array ( [0] => {/describe:foo} [1] => foo )
$regexp = '/\{/describe:(.*?)\}/i'
$regexp = '#{/describe:([^}]+)}#i';
$query  = '{/describe:foo}'; 
preg_match($regexp, $query, $match);

print_r($match);