这个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。