我想从以下位置匹配和提取变量:{{variable:int}}
- 变量可以是任何东西
- :是分隔符
- int将是一个整数 0-9
目前我有:preg_replace('!\{\{(\S+)\}\}!', "$1", $string)
它只完成了一半的工作,我仍然需要拆分:
。
谢谢!
我想从以下位置匹配和提取变量:{{variable:int}}
目前我有:preg_replace('!\{\{(\S+)\}\}!', "$1", $string)
它只完成了一半的工作,我仍然需要拆分:
。
谢谢!
您需要一个非贪婪匹配 ( .*?
):preg_replace('!\{\{(.*?):(\d)\}\}!')
采用
{{([a-zA-Z]+):(\d+)}}
$1 将包含捕获的变量,$2 将包含捕获的整数
解释
{{([a-zA-Z])+:(\d+)}}
[a-zA-Z]+ 表示至少一个字母(小写或大写字母)
后跟一个“:”
,后跟至少一个或多个数字 (0-9)
如果你想提取名称/值,我想你想使用 preg_match。
preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);
$varname = $matches[1];
$val = $matches[2];