【发布时间】:2012-05-26 12:53:29
【问题描述】:
我一直在使用这个 /\(\s*([^)]+?)\s*\)/ 正则表达式通过 PHP preg_replace 函数删除外括号(在我的上一个问题 Regex to match any character except trailing spaces 中阅读更多信息)。
这在只有一对括号时可以正常工作,但问题是当有更多括号时,例如( test1 t3() test2) 变为test1 t3( test2) 而不是test1 t3() test2。
我知道正则表达式的限制,但如果有一对以上的括号,我可以让它不匹配任何东西。
所以,示例行为就足够了:
( test1 test2 ) => test1 test2
( test1 t3() test2 ) => (test1 t3() test2)
编辑:
我想继续修剪已删除括号内的尾随空格。
【问题讨论】:
-
您应该在示例中添加尾随空格并说明您不想要它。否则,当您意识到您接受的解决方案不适用于尾随空格时,您将不得不提出第三个问题:P
-
我编辑了示例,这样人们就可以通过尝试示例来查看他们的代码是否满足该要求。有内括号,为什么还要保留外括号?
-
因为这个正则表达式只是更大的一部分,我只是想保持简单并要求这个括号部分。如果之前/之后有括号,则删除括号会使输出字符串在语法上无效。
标签: php regex preg-replace brackets