我正在尝试匹配一个字符串,请参阅示例,以便将嵌套括号 () 替换为 [],以免在其他地方破坏解析器。在这种情况下,我想将 $myStr 替换为“Arman; Dario (10040 Druento (Turin), IT)”...
提前致谢!
蒙特
{x:
$myStr = "Arman; Dario (10040 Druento (Turin), IT)";
$pattern = "/(\()([a-z,A-Z0-9_\&\/\'\-\,\;\:\.\s^\)]+)(\))/";
if (preg_match_all($pattern,$myStr,$matches))
{
print_r($matches);
}
显然,我还需要切换match_all来替换。
总结一下:
输入
$myStr = "Arman; Dario (10040 Druento (Turin), IT)";
输出
$myStr = "Arman; Dario (10040 Druento [Turin], IT)";
最佳答案
您无法使用正则表达式可靠地完成此操作。如果您无论如何选择使用此方法,答案取决于您愿意对输入做出什么假设。例如,如果您愿意假设可以替换最里面的括号,那么答案很简单:
preg_replace('!\(([^()]*)\)!', '{$1}', $input);
如果您专门寻找嵌套括号,请尝试:
preg_replace('!\(([^()]*)\(([^()]*)\)([^()]*)\)!', '($1{$2}$3)', $input);
关于PHP正则表达式将嵌套()替换为[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182867/