这是我第一次尝试使用正则表达式,所以请耐心等待。
我想使用php preg_replace函数来转换这样的字符串:
"r1=r2+robby+ara"
到
"ar1b=ar2b+robby+ara"
我已经找到了搜索部分,但没有找到替换部分 - 下面的问号表示我遇到了麻烦。有没有办法“记住”[0-9]找到的整数并在替换字符串中使用它?
$s="r1=r2+robby + ara";
$s1=preg_replace ( "/r[0-9]/","ar?b",$s);
谢谢
答案 0 :(得分:1)
你很亲密,但需要括号:
$s="r1=r2+robby + ara";
$s1=preg_replace ( "/r([0-9])/","ar$1b", $s); // produces ar1b=ar2b+robby + ara
(
和)
告诉PHP捕获其间的任何内容(数字)。替换中的$1
告诉PHP在该位置使用该值(数字)。
注意:如果您的问题真的很简单,那么您不需要使用括号,并且可以使用$0
,这意味着“整个匹配部分”,就像在xdazz的答案中一样:
$s1=preg_replace ( "/r[0-9]/","a$0b", $s); // produces ar1b=ar2b+robby + ara
答案 1 :(得分:1)
// \0 means the matched part
$s1 = preg_replace('/r\d/', 'a\0b', $s);
答案 2 :(得分:1)
我会这样做:
$str_out = preg_replace('/\b(r\d)\b/', 'a$1b', $str_in);
\b
是一个字边界,在这种情况下,它会阻止替换xr1y