需要删除其中的括号和文字。现在,它正在运行。删除从括号开始的所有文本。 我的代码:
$lines = preg_replace("/\(([^\d]+)/", '', $lines);
例如,文字:
Some random words (word1 / word2 / word3) aaaa
代码也会删除括号后的所有文本,
Some random words
但我需要做的是(应该是什么样子):
Some random words aaaa
答案 0 :(得分:3)
/\([^()]*\)/
\(
- 开放式括号[^()]*
- 尽可能多的字符,不是括号\)
- 右括号您可以选择删除末尾的一个空格(/\([^()]*\) ?/
),这样就不会有两个空格来移除。
请注意,这不会处理嵌套括号的情况,例如:
foo (bar (baz) quiz)
要做到这一点,你必须更有创意:
(?<no_brackets>[^()]*){0}(?<balanced_brackets>\(\g<no_brackets>\)|\(\g<no_brackets>\g<balanced_brackets>\g<no_brackets>\))
答案 1 :(得分:2)
您在表达结尾处缺少额外的\)
。因此,您的表达式将在找到一个开括号并继续运行时开始匹配。