php 正则表达式查找双括号

php regex finding double brackets

我有一些提交的文本,它会包含双括号中的单词,但也可以有一些只包含在单括号中的单词。但我只想要双括号中的那些。

示例:

[[test]] [test1] [[test2]] [test5] [[test3]]

在同一个字符串中有其他词等...

例如:

[[test]] the quick [test1] brown [[test2]] fox [[test3]] jumped [mytest] over the lazy [[test4]] dog

现在我有一个 preg_match_all 有:

(preg_match_all('/\[.*?\]\]/is',$str,$match))

但是,它也会拉出单括号...我不擅长正则表达式。

有人对我如何只拉双括号有任何意见吗?

谢谢!

改用这个。

\[{2}.*?\]{2}

演示:https://regex101.com/r/bW0mM6/1

{2} 需要出现 2 次。您只用表达式检查一个括号。

PHP 演示:http://sandbox.onlinephpfunctions.com/code/2f16f7e102d822e31dc128a384f8090181c7461d

PHP 用法:

$str = '[[test]] [test1] [[test2]] [test5] [[test3]]';
preg_match_all('/\[{2}(.*?)\]{2}/is',$str,$match);
print_r($match[1]);

输出:

Array
(
    [0] => test
    [1] => test2
    [2] => test3
)

另请注意,我在 PHP 演示中捕获了双括号中的值,不确定这是否是您想要的。