php preg_replace 模式 [[ 和 ]]
我似乎无法让我的代码工作。
考虑一个字符串
$string = "the [[quick [[brown]] fox [jumps]] over the]] lazy dog";
,我想删除 [[ ]] 中的所有单词,从而给我一个结果“懒狗”。
使用 preg_replace('/\[\[(.*?)\]\]/s', '' ,$string)
会给我一个结果:
]]懒狗
这是错误的。有人能解决这个问题吗?
I couldn't seem to make my code work.
Consider a string
$string = "the [[quick [[brown]] fox [jumps]] over the]] lazy dog";
I want to remove all words in [[ ]] thus giving me a result "the lazy dog".
using preg_replace('/\[\[(.*?)\]\]/s', '' ,$string)
will give me a result:
the ]] lazy dog
Which is wrong. Does anyone have a work around with this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用正则表达式很难做到这一点。我建议只用手做。
It will be difficult doing it with regex. I'd suggest just doing it by hand.
试试这个:
Try this:
操作上的区别是
(?:\[\[.*?\]\]|.)*?
。它首先尝试匹配括号内的字符串,而不是您的.*?
,然后如果失败,它会尝试.
。The operative difference is
(?:\[\[.*?\]\]|.)*?
. Instead of your.*?
, it first attempts to match a bracketed string, then if that fails, it tries.
.