preg_replace问题

时间:2009-11-05 12:04:41

标签: php regex preg-replace

我想匹配并从{{variable:int}}

中提取变量
  • 变量可以是a-z
  • 是分隔符
  • int 将是0-9的整数

Curretly我有:preg_replace('!\{\{(\S+)\}\}!', "$1", $string) 只做了一半的工作,我仍然要分开:

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要non-greedy匹配(.*?):preg_replace('!\{\{(.*?):(\d)\}\}!')

答案 1 :(得分:1)

使用

{{([a-zA-Z]+):(\d+)}}

$ 1将包含捕获的变量,$ 2将包含捕获的整数

<强>解释

{{([a-zA-Z])+:(\d+)}}

[a-zA-Z] +表示至少还有一个字母(小字或大写字母)
然后是“:” 然后是至少一个或多个数字(0-9)

答案 2 :(得分:1)

如果你想提取名字/值,我想你想使用preg_match。

preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);  
$varname = $matches[1];  
$val = $matches[2];