PHP正则表达式找到双括号

sup*_*erm 1 php regex preg-match-all

我提交了一些文本,它将在双括号中包含单词,但是在单括号中只能包含一些单词。但是我只想要放在方括号中的那些。

例:

[[测试]] [测试1] [[测试2]] [测试5] [[测试3]]

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

因此,例如:

[[test]]快速[test1]棕色[[test2]]狐狸[[test3]]在懒惰的[[test4]]狗上跳了[mytest]

现在我有一个preg_match_all与:

(preg_match_all('/\\[.*?\\]\\]/is',$str,$match))
Run Code Online (Sandbox Code Playgroud)

但是,它也拉了单括号的...我正则表达式很烂。

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

谢谢!

chr*_*s85 5

改用它。

\[{2}.*?\]{2}
Run Code Online (Sandbox Code Playgroud)

演示: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]);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [0] => test
    [1] => test2
    [2] => test3
)
Run Code Online (Sandbox Code Playgroud)

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