我想要替换(
和)
之间的所有内容。它也适用于这个preg_replace()。
$return = preg_replace("/\([^)]+\)/", "", $return);
如果我的$return
与"Hello my name is Frank (nicer guy)"
字符串为"Hello my name is Frank"
但如果括号之间也是下一个括号,则它不起作用。例如:
之前:
"Hello my name is Frank (nicer (guy) thank you)"
之后
"Hello my name is Frank thank you)"
在第一个“)”之后停止。是否有可能删除括号内的圆括号?
答案 0 :(得分:2)
匹配从第一个(
开始的所有内容,然后回溯到最后一次出现的)
:
\(.*\)
注意: *
必须贪婪才能发挥作用。因此,请确保未设置不合格modifier U
(默认)。
如果您的字符串可以包含多个独立的带括号的子字符串,即"Hello (my name is) Frank (nicer (guy) thank you)"
,则需要recursive pattern。
示例\(((?>[^()]+)|(?R))*\)
效果很好。
答案 1 :(得分:0)
以下是您的代码:
<?php
$in = '"Hello my name is Frank (nicer guy)"';
$out = preg_replace('/\s\(.*\)/','',$in);
echo $out;
?>
输出将是:&#34;您好我的名字是Frank&#34;