Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有两个连续(相同或不相同)匹配项的正则表达式_Php_Regex - Fatal编程技术网

Php 具有两个连续(相同或不相同)匹配项的正则表达式

Php 具有两个连续(相同或不相同)匹配项的正则表达式,php,regex,Php,Regex,我为PHP正则表达式函数编写了以下正则表达式: \[\[.*?\]\] 这与双方括号中的单词或短语相匹配。我现在试图找到的是一个regexp,它匹配两个或多个连续(相同或不相同)的匹配。我试过了 (\[\[.*?\]\]){2,} 使用此解决方法:。然而,它们都不起作用。有人有更好的主意吗 我试图匹配的是,例如,[1][2][3]。regexp的第一部分将匹配[one],我正在尝试获取整个短语[one][two][three] 谢谢 如果从第二个图案的两侧卸下一个支架,它就可以工作了。看 一

我为PHP正则表达式函数编写了以下正则表达式:

\[\[.*?\]\]
这与双方括号中的单词或短语相匹配。我现在试图找到的是一个regexp,它匹配两个或多个连续(相同或不相同)的匹配。我试过了

(\[\[.*?\]\]){2,}
使用此解决方法:。然而,它们都不起作用。有人有更好的主意吗

我试图匹配的是,例如,
[1][2][3]
。regexp的第一部分将匹配
[one]
,我正在尝试获取整个短语
[one][two][three]


谢谢

如果从第二个图案的两侧卸下一个支架,它就可以工作了。看

一个更优雅的解决方案是。这里,
\[
匹配一个
[
[^][]*
将匹配除
]
之外的零个或多个字符,
[
]
将匹配一个结束文字
]

如果要将第一个
[one]
捕获到组1中,请使用。这里,
(?1)
重新使用组1子模式(即
\[^][]*]

以下是一份:


尝试请提供测试字符串和预期输出,因为问题听起来有点不清楚。它怎么不起作用?你说的相同或不匹配是什么意思?也许你需要?或者?@WiktorStribiżew我试图匹配的是,例如,
[1][2][3]
。regexp的第一部分将匹配
[one]
,我正在尝试获取整个短语
[one][two][three]
。这更清楚吗?非常感谢。你的正则表达式行得通,不是吗?如果从两侧拆下1个支架。看见或者更优雅的:。还是要捕获第一个
[一个]
?然后使用。您需要什么样的输出结构?以上任何一项对您有用吗?@WiktorStribiżew我的预期输出是
[1][2][3]
。对不起,我说得不够清楚!:(
$re = '~(?:\[[^][]*]){2,}~'; 
$str = "[one][two][three]"; 
preg_match($re, $str, $matches);
print_r($matches[0]); // => [one][two][three]