3

我想使用 preg_replace() 删除括号及其内容,但我无法在模式中使用惰性(非贪婪),因为结束括号是结束字符,括号之间的文本始终是随机字符长度,可以包含数字、下划线和连字符。

代码-

$array = array(
   "Text i want to keep (txt to remove)",
   "Random txt (some more random txt)",
   "Keep this (remove)",
   "I like bananas  (txt)"
);

$pattern = "@pattern@";
foreach($array as $new_txt){
   $new_outputs .= preg_replace($pattern, '', $new_txt)."\n";
}
echo $new_outputs;

想要的输出-

Text i want to keep
Random txt
Keep this
I like bananas

我很少使用正则表达式,也找不到任何东西来解决我的问题。

4

3 回答 3

9

以下正则表达式应该这样做:

$pattern = '@\(.*?\)@';

.*?是任何事物的非贪婪匹配。

于 2013-03-31T07:17:26.470 回答
3
$new_outputs .= preg_replace('@\([^\)]*\)$@','',$new_txt);
于 2013-03-31T07:16:04.413 回答
2

这可能会帮助您:

$pattern = "/\([^)]*\)+/";
foreach($array as $new_txt){
    $new_outputs .= preg_replace($pattern, '', $new_txt)."\n";
}
于 2013-03-31T07:19:04.403 回答