这个PHP正则表达式模式意味着什么?
有人能解释一下这个正则表达式中每个字符的含义吗:这个PHP正则表达式模式意味着什么?,php,regex,string,Php,Regex,String,有人能解释一下这个正则表达式中每个字符的含义吗: ...preg_match('/\{loop(?: name){0,1}=\${0,1}(.*?)\}/', $html, $code)... 这看起来像是模板解析器的一部分 \{loop(?: name){0,1}=\${0,1}(.*?)\} -------------------- 匹配{loop name或{loop.?:告诉解析器不要将该子模式放入Matches数组中。{0,1}标记它可以出现零次或一次 \{loop(?: name
...preg_match('/\{loop(?: name){0,1}=\${0,1}(.*?)\}/', $html, $code)...
这看起来像是模板解析器的一部分
\{loop(?: name){0,1}=\${0,1}(.*?)\}
--------------------
匹配{loop name或{loop.?:告诉解析器不要将该子模式放入Matches数组中。{0,1}标记它可以出现零次或一次
\{loop(?: name){0,1}=\${0,1}(.*?)\}
---------------
匹配等号,后跟可选的美元符号$,后跟一些文本,很可能是变量名,最后以}结尾
{0,1}的实例可以替换为RegExp的?/-开头。
\{-匹配一个{字符。=>[{]
loop-匹配单词loop=>[{loop]
?:-不包含在匹配数组=>[{loop]
*-将多个令牌分组在一起。这允许您将量词应用于整个组。这将创建一个捕获组。
name-匹配单词name=>{loopname
{0,1}-将以前的正则表达式0与1匹配一次。
=\$-匹配=$。=>{loopname=$
{0,1}-将以前的正则表达式0与1匹配一次。
.*?-.=任何单词字符。*?与前面的0个或多个标记匹配。=>{loopname=$anything
\}-匹配一个}字符。=>{loopname=$anything}
/-RegExp结束。Regex自由间距“x”模式对救援的注释
$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';
谢谢!是什么字符使$成为可选的?哪一个字符使它成为必需的?哦,nvm,你刚才说{0,1}可以做到这一点:另请参见:有关漂亮的正则表达式分析和调试工具。[]添加/x时替换空格字符?@Alex:是的。在自由空格模式下,所有空格都将被忽略,除非它被转义或在字符类中。例如,我可以说:\而不是[],这是可读性较差的IMHO。