去掉括号前后的空格

Remove spaces before and after parentheses

我正在尝试删除一个或多个 spaces after 左括号和 before 两轮右括号和方括号。

$s = "This is ( a sample ) [ string ] to play with"

预期结果:

"This is (a sample) [string] to play with"

我设法删除了 space 之前:

$s = preg_replace('/\s+(?=[\])])/', '', $s);

结果:

"This is ( a sample) [ string] to play with"

但不是 spaces 括号之后!

试试这个正则表达式:

(?<=[([]) +| +(?=[)\]])

Click for Demo

用空字符串替换匹配项

解释:

  • (?<=[([]) + - 匹配出现 1 次以上的 space,其前面是 [(
  • | - 或者
  • +(?=[)\]]) - 匹配出现 1 次以上的 space,其后跟 )]