PHP正则表达式将嵌套()替换为[]

标签 php regex

我正在尝试匹配一个字符串,请参阅示例,以便将嵌套括号 () 替换为 [],以免在其他地方破坏解析器。在这种情况下,我想将 $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/

相关文章:

PHP mysql 查询不计0000-00-00

php - 验证 GET 字符串但仍使用特殊字符?

php - Mysql 更新数据库,其中日期 == -15 来自当前

C# - 文件路径的正则表达式,例如C :\test\test. 可执行文件

python - 确定正则表达式匹配中的组是否为数字

java - Java 真的如其声称的那样转义了反斜杠吗?

php - 删除 Woocommerce 产品简短说明

php - PDO MySQL 每次插入两次?

python重新匹配组: number after\number

regex - 如何使用正则表达式匹配单引号或双引号中的字符串