我需要删除[和]括号之间的文字(以及括号)。
例如:
你好,[你怎么样]
必须成为:
您好,
并且,字符串如:
你好,[怎么] [是]你
必须成为:
你好,你
有一个正则表达式吗?
答案 0 :(得分:4)
您只需要使用[]
功能删除preg_replace
之间的所有内容。
$a = 'hello, [how][are] you';
echo preg_replace('#\s*\[.+\]\s*#U', ' ', $a); // hello, you
正则表达式捕获前后的每个空格,并用一个空格替换它。
请注意,[
和]
是正则表达式中的保留字符,您需要使用\
转义它们。如果您希望在字符串中写入[]
(两者之间没有任何内容),则可以转换.*
中的.+
。
答案 1 :(得分:3)
如果要处理嵌套括号和额外的水平空格,可以使用此方法:
$txt = preg_replace('~\h*\[(?:[^][]+|(?R))*+]\h*~', ' ', $txt);
或展开循环:
$txt = preg_replace('~\h*\[[^][]*+(?:(?R)[^][]*)*+]\h*~', ' ', $txt);
答案 2 :(得分:0)
这是怎么回事?
print preg_replace('/\[[^\[\]]*\]/', '', $str);
答案 3 :(得分:0)
使用此模式\[.*?\](?![^\[\]]*\])
来处理嵌套Demo