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