Php 正则表达式匹配“;{number}";

Php 正则表达式匹配“;{number}";,php,regex,performance,Php,Regex,Performance,我需要用“test(Z)”替换“{Z}”,其中Z始终是一个使用PHP和正则表达式的无符号整数(除非有更快的方法?) 棘手的部分是,它需要在速度和内存使用方面以最好的方式完成 $code = preg_replace('/\{(\d+)\}/', 'test($1)', $code); 根据我的经验,preg\u replace比使用str\u replace或strtrtr进行替换的任何方法都要快得多。缺少的一行是: $code = preg_replace('/{([0-9]+)}/', '

我需要用“test(Z)”替换“{Z}”,其中Z始终是一个使用PHP和正则表达式的无符号整数(除非有更快的方法?)

棘手的部分是,它需要在速度和内存使用方面以最好的方式完成

$code = preg_replace('/\{(\d+)\}/', 'test($1)', $code);

根据我的经验,
preg\u replace
比使用
str\u replace
strtrtr
进行替换的任何方法都要快得多。缺少的一行是:

$code = preg_replace('/{([0-9]+)}/', 'test($1)', $code);
工作原理:

{ match a literal { ( start a capturing group [0-9]+ one or more digits in 0-9 ) end the capturing group } match a literal } {匹配文字{ (启动一个捕获组 [0-9]+0-9中的一个或多个数字 )结束捕获组 }匹配文字}
替换字符串中的$1指的是第一个(也是唯一一个)捕获组捕获的字符串。

@amphetamachine:我想说,如果你实际上是指0-9中的数字,那么你应该写
[0-9]
。这就清楚地表明,您只对那些特定的数字感兴趣,而对其他可以解释为数字的字符不感兴趣。在这种情况下,这没有多大区别,但我不明白为什么直言不讳是一种“坏习惯”。也许你可以解释一下你的推理?拉里·沃尔认为
\d
比键入
[0-9]
更容易键入,也不容易出错。他们的意思是一样的。 { match a literal { ( start a capturing group [0-9]+ one or more digits in 0-9 ) end the capturing group } match a literal }