4

我想从我的标识符中得到匹配。

我有一个像这样的字符串进入{/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;
  }
4

5 回答 5

3

您在正则表达式中缺少正斜杠:

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

或者:

$regexp = '#\{/describe:(.*?)\}#i';
于 2013-03-20T16:08:11.393 回答
3
$regexp = '/\{\/describe\:(.*?)\}/i';
$query  = '{/describe:foo}';
preg_match($regexp, $query, $match);

print_r($match); // Array ( [0] => {/describe:foo} [1] => foo )
于 2013-03-20T16:08:24.387 回答
2
$regexp = '#{/describe:([^}]+)}#i';
$query  = '{/describe:foo}'; 
preg_match($regexp, $query, $match);

print_r($match);
于 2013-03-20T16:09:49.707 回答
1

用最简单的术语来说,您可以使用它:(?<=\/describe:).*(?=})

于 2013-03-20T16:08:12.650 回答
1

尝试(/在描述之前看起来好像丢失了):

$regexp = '/\{/describe:(.*?)\}/i'
于 2013-03-20T16:08:47.273 回答