如何删除圆括号之间的所有内容?
我这个段落里面有多个括号。
Albert Einstein (/ˈælbərt ˈaɪnstaɪn/; {German} [ˈalbɐt ˈaɪnʃtaɪn] ( listen); 14 March 1879 – 18 April 1955) was a German-born theoretical physicist.
我试过了:
$text = preg_replace("/\([^)]+\)/",' ',$text);
$text = preg_replace('/\[.*?\]/', ' ', $text);
输出是这样的:
Albert Einstein ; 14 March 1879 18 April 1955) was a German born theoretical physicist.
我想删除里面的所有内容并将其输出。
Albert Einstein was a German born theoretical physicist
答案 0 :(得分:1)
您可以在PHP中使用递归正则表达式:
(\((?:[^()]+|(?1))+\))\s*
第一个捕获组有:\((?:[^()]+|(?1))+\)
在parens中,您有(?:[^()]+|(?1))+
,因此您有[^()]+
作为第一个选项,或者(?1)
指的是第一个捕获组,这意味着您可以拥有相同的组parens,这是递归部分。
然后\s*
外面只是删除额外的空格(如果有的话)。如果你把一个放在前面并用一个空格替换,实际上可能会更好,但理想的是在我相信的第一次替换后删除任何双倍空间。