PHP REGEX删除括号中的括号和文本

时间:2016-01-07 12:55:48

标签: php regex

需要删除其中的括号和文字。现在,它正在运行。删除从括号开始的所有文本。 我的代码:

$lines = preg_replace("/\(([^\d]+)/", '',  $lines);

例如,文字:

Some random words (word1 / word2 / word3) aaaa

代码也会删除括号后的所有文本,

Some random words

但我需要做的是(应该是什么样子):

Some random words aaaa

2 个答案:

答案 0 :(得分:3)

/\([^()]*\)/
  • \( - 开放式括号
  • [^()]* - 尽可能多的字符,不是括号
  • \) - 右括号

您可以选择删除末尾的一个空格(/\([^()]*\) ?/),这样就不会有两个空格来移除。

请注意,这不会处理嵌套括号的情况,例如:

foo (bar (baz) quiz)

要做到这一点,你必须更有创意:

(?<no_brackets>[^()]*){0}(?<balanced_brackets>\(\g<no_brackets>\)|\(\g<no_brackets>\g<balanced_brackets>\g<no_brackets>\))

See it in action

答案 1 :(得分:2)

您在表达结尾处缺少额外的\)。因此,您的表达式将在找到一个开括号并继续运行时开始匹配。