Php 简单正则表达式帮助删除括号和括号之间的内容
我需要移除支架和中间的所有东西:Php 简单正则表达式帮助删除括号和括号之间的内容,php,regex,Php,Regex,我需要移除支架和中间的所有东西: $url = 'abc[wenn]'; echo preg_replace('/\[(.)\]/i','',$url); 我的正则表达式有什么不正确的地方?您需要星号*或+量词才能工作: /\[.*?\]/i 没有它,()将只匹配一个字符 更好的是,如果[和]之间的值不能包含]本身,则可以使用更强大的表达式: /\[[^\]]+\] \[ '[' [^\]]* any character except: '\]' (
$url = 'abc[wenn]';
echo preg_replace('/\[(.)\]/i','',$url);
我的正则表达式有什么不正确的地方?您需要星号
*
或+
量词才能工作:
/\[.*?\]/i
没有它,()
将只匹配一个字符
更好的是,如果[
和]
之间的值不能包含]
本身,则可以使用更强大的表达式:
/\[[^\]]+\]
\[ '['
[^\]]* any character except: '\]' (0 or more times)
\] ']'
您需要星号
*
或+
量词才能工作:
/\[.*?\]/i
没有它,()
将只匹配一个字符
更好的是,如果[
和]
之间的值不能包含]
本身,则可以使用更强大的表达式:
/\[[^\]]+\]
\[ '['
[^\]]* any character except: '\]' (0 or more times)
\] ']'
没有设置量词,因此匹配失败,字符串重复。您还使用了
i
修饰符(不区分大小写),该修饰符在本例中无效,可以删除
可以识别以下量词
* Match 0 or more times
+ Match 1 or more times
以下是您正在寻找的方法
preg_replace('/\[[^\]]*\]/', '', $url);
正则表达式:
/\[[^\]]+\]
\[ '['
[^\]]* any character except: '\]' (0 or more times)
\] ']'
如果要删除嵌套括号,abc[foo[bar[baz]]]
可以使用以下命令:
preg_replace('/\[(?:[^\[\]]|(?R))*\]/', '', $url);
没有设置量词,因此匹配失败,字符串重复。您还使用了
i
修饰符(不区分大小写),该修饰符在本例中无效,可以删除
可以识别以下量词
* Match 0 or more times
+ Match 1 or more times
以下是您正在寻找的方法
preg_replace('/\[[^\]]*\]/', '', $url);
正则表达式:
/\[[^\]]+\]
\[ '['
[^\]]* any character except: '\]' (0 or more times)
\] ']'
如果要删除嵌套括号,abc[foo[bar[baz]]]
可以使用以下命令:
preg_replace('/\[(?:[^\[\]]|(?R))*\]/', '', $url);
@什么没用?对不起,我错了。没有仔细看。。这没关系,也是一种选择+1@hek2mgl好的,没问题,谢谢。+1可以写成
/\[^]*]/
(小心量词和OP请求)@CasimiretHippolyte谢谢,我知道,但我不想混淆正则表达式,因为它看起来已经混淆了,因为所有的[
和]
@hek2mgl什么没用?对不起,我错了。没有仔细看。。这没关系,也是一种选择+1@hek2mgl好的,没问题,谢谢。+1可以写成/\[^]*]/
(小心量词和OP请求)@CasimiretHippolyte谢谢,我知道,但我不想混淆正则表达式,因为它看起来已经混淆了,因为所有的[
和]
。是否存在括号嵌套的可能性?此处可能有一个简单的字符串操作选项,该选项的性能可能优于正则表达式,具体取决于所计算字符串的预期值。是否总是只有一组括号?括号内的部分是否总是在字符串的末尾?括号是否嵌套?这里可能有一个简单的字符串操作选项,它的性能可能比正则表达式更好,具体取决于所计算字符串的预期值。是否总是只有一组括号?括号内的部分是否始终位于字符串的末尾?