2

问题删除括号之间的文本 PHP有效,但仅适用于“完整”括号(打开和关闭):

preg_replace('/\([^)]+\)/', '', $myString);

但我也需要它与未闭合的括号一起使用。例如:

$string1 = 'Something (unimportant stuff'; //Becomes 'Something '
$string2 = '(unimportant stuff'; //Becomes '' (empty string)
$string3 = 'Something (bad) happens'; //Becomes 'Something  happens'
$string4 = 'Something)'; //Stays the same

我真的不在乎我是否必须通过两次通过(使用原始答案和新答案)...

4

3 回答 3

4

您可以将最后的右括号设为可选:

preg_replace('/\([^)]+\)?/', '', $myString);
                        ^
于 2013-05-03T15:03:32.620 回答
1

已经不行了怎么办?如果只是未闭合的,您可以搜索右括号或行尾吗?

preg_replace('/\([^)]+(\)|$)/', '', $myString);
于 2013-05-03T15:04:12.520 回答
0

用这个正则表达式试试/^[^(]*\)|\([^)]*$|\([^()]*\)/

这将匹配没有左大括号但没有右大括号的短语,有左大括号但没有右大括号以及有左大括号和右大括号的短语

于 2013-05-03T15:12:10.237 回答