我正试图使用preg_replace来删除封装在方括号[]内的不需要的文本块,但只删除方括号[*]内任何位置包含一个或多个星号*的文本块
例如:等等等等等等等等
在以上内容中,我想要[废话]和[废话]
我已经到达:
$new_string = preg_replace('/'[.*('*).*']/', '', $string);
但这会逃脱,或者超过了右括号并删除了太多内容。
试试这个:
$new_string = preg_replace('/'[[^']]*('*)[^']]*']/', '', $string);
不同的是,您不是寻找一些任意字符.*
,而是寻找一些字符,但要寻找右括号[^']]*
——这是必要的,因为正则表达式是贪婪,否则会寻找最后一个右括号。有点难以阅读,因为所有的括号,星号和转义。。。
它将输出
blah blah blah blah [ blah ] blah blah [] [ blah ] blah