用于在php中查找/添加字符串的正则表达式

时间:2015-02-06 10:05:41

标签: php regex

我在.txt文件中有这些类型的文本

rpad(SomeText, 2, \' \') , rpad(SomeTexxt, 18, \' \')

我希望将它们转换为

nvl(rpad(SomeText, 2, \' \'),\'$$\') , nvl(rpad(SomeTexxt, 18, \' \'),\'$$$$$$$$$$$$$$$$$$\')

我如何用PHP做到这一点?  新添加的$应该与2或18这样的数字一样多。

1 个答案:

答案 0 :(得分:0)

您需要在此处使用pre_replace_callback功能。

$str="rpad(SomeText, 2, \' \') , rpad(SomeTexxt, 18, \' \')";
echo preg_replace_callback("~rpad\(\w+,\h*(\d+),[^)]*\)~", function($m){
    return 'nvl('.$m[0].",\'".str_repeat("$", $m[1])."\')";
}
, $str);

(\d+)捕获somtext之后的数字,然后根据捕获的数字用于重复$符号数次。

<强>输出:

nvl(rpad(SomeText, 2, \' \'),\'$$\') , nvl(rpad(SomeTexxt, 18, \' \'),\'$$$$$$$$$$$$$$$$$$\')