我有多个文件已经过时格式,我想用最新的格式替换它们。我的一个麻烦是找到所有的包装器字符串并替换它们,而我必须保留它们的内部内容。
示例
我想将表达式ABC($IGNORE$)
转换为XBD([$IGNORE$])->T
。
这是需要更新格式的字符串。
输入:
... ABC( ......
..... (inner content should not be changed) .....
......) ....
输出:
... XBD([ ......
..... (inner content should not be changed) .....
......])->T ....
我如何实现它?
答案 0 :(得分:1)
您可以使用以下能够匹配嵌套圆括号的正则表达式:
\bABC(\(((?>[^()]+)|(?-2))*\))
替换为XBD$1->T
。
请参阅demo
<?php
$re = "#\bABC(\(((?>[^()]+)|(?-2))*\))#";
$str = "ABC( ......\n..... (inner content should not be changed) .....\n......) ";
$subst = "XBD$1->T";
echo $result = preg_replace($re, $subst, $str);
?>