虽然我可以找到很多关于正则表达式的教程,但它仍然掌握在我的掌握之上。我想要创建的正则表达式很简单(根据我在一些示例中看到的情况判断),但我根本无法弄明白。
我想做一个简单的替换,如下所示:
[[IMAGE:1:right]]content here[[image:2:left]].
这是我的尝试:
preg_match("/^\[\[image:(\d+):(left|right)\]\]+/i", "[[IMAGE:1:right]]content here[[image:2:left]]", $matches);
这让我得到了回报:
Array ( [0] => [[IMAGE:1:right]] [1] => 1 [2] => right )
所以,它找到一个,但是我想让它找到所有这些,因为我可能在帖子中有多个图像。据我所知,+应该匹配所有条目,并且i应该匹配不区分大小写。似乎不区分大小写的方式有效,但我只得到一次返回。
有人可以让我知道我做错了吗?
答案 0 :(得分:0)
这不是它的工作原理。 +
仅适用于紧接其之前的令牌 - ]
。你想在Perl白话中创建匹配global
,对于PHP(我认为你正在使用它?)意味着调用函数preg_match_all()
。您还必须删除^
,因为只有一个图像出现在字符串的开头。
此外,[
和]
是正则表达式中的特殊字符 - 因此,如果您想要一个文字括号,请通过撰写\[\[
和\]\]
来转义它们。