有人能解释一下这个正则表达式中每个字符的含义吗:
...preg_match('/{loop(?: name){0,1}=${0,1}(.*?)}/', $html, $code)...
Regex free spacing'x'mode注释拯救!
$re = '/
{ # Match a literal "{".
loop # Match the literal text: "loop".
(?: # Begin non-capture group to
[ ]name # match the literal text: " name"
){0,1} # from zero to one times.
= # Match a literal "=".
${0,1} # match literal "$" from zero to one times.
(.*?) # Capture in group $1 zero or more non-"n".
} # Match a literal "}".
/x';
这看起来可能是模板解析器的一部分。
{loop(?: name){0,1}=${0,1}(.*?)}
--------------------
匹配{loop name
或{loop
。?:
告诉解析器不要将该子模式放在匹配数组中。{0,1}
标记它可以出现零次或一次。
{loop(?: name){0,1}=${0,1}(.*?)}
---------------
匹配等号,然后是可选的美元符号($
(,然后是一些文本,很可能是变量名,最后是}
{0,1}
的实例本可以用?
替换
/
-RegExp的开始{
-匹配一个{
字符。=>[{
]loop
-匹配单词"loop"=>[{loop
]?:
-不包括在匹配数组中=>[{loop
](
*)
-将多个令牌分组在一起。这允许您将量词应用于整个组。这将创建一个捕获组name
-匹配单词"name"=>{loop(name)
{0,1}
-将上一个正则表达式0与1进行匹配=$
-匹配"=$"。=>{loop(name)=$
{0,1}
-将上一个正则表达式0与1进行匹配(.*?)
-.
=任意单词字符。*?
匹配0个或多个上一个令牌。=>{loop(name)=$anything
}
-匹配一个}
字符。=>{loop(name)=$anything}
/
-RegExp结束。