删除 ( 和 ) 之间的所有内容
Delete All Between ( and )
我想替换 (
和 )
之间的所有内容。它也适用于此 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)"
它在第一个“)”后停止。难不成把括号里面的括号也删掉了?
匹配以第一个 (
开头的所有内容,然后回溯到最后出现的 )
:
\(.*\)
注意: *
必须贪心才能起作用。因此,请确保未设置 modifier U
(默认)。
如果您的字符串可以包含多次出现的独立括号子字符串,即 "Hello (my name is) Frank (nicer (guy) thank you)"
,那么您需要 recursive pattern.
那里的例子\(((?>[^()]+)|(?R))*\)
效果很好。
这是适合您的代码:
<?php
$in = '"Hello my name is Frank (nicer guy)"';
$out = preg_replace('/\s\(.*\)/','',$in);
echo $out;
?>
输出将是:"Hello my name is Frank"
我想替换 (
和 )
之间的所有内容。它也适用于此 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)"
它在第一个“)”后停止。难不成把括号里面的括号也删掉了?
匹配以第一个 (
开头的所有内容,然后回溯到最后出现的 )
:
\(.*\)
注意: *
必须贪心才能起作用。因此,请确保未设置 modifier U
(默认)。
如果您的字符串可以包含多次出现的独立括号子字符串,即 "Hello (my name is) Frank (nicer (guy) thank you)"
,那么您需要 recursive pattern.
那里的例子\(((?>[^()]+)|(?R))*\)
效果很好。
这是适合您的代码:
<?php
$in = '"Hello my name is Frank (nicer guy)"';
$out = preg_replace('/\s\(.*\)/','',$in);
echo $out;
?>
输出将是:"Hello my name is Frank"