这个PHP正则表达式模式是什么意思?

时间:2011-04-24 15:27:19

标签: php regex string

任何人都可以解释这个正则表达式中每个字符的含义:

...preg_match('/\{loop(?: name){0,1}=\${0,1}(.*?)\}/', $html, $code)...

3 个答案:

答案 0 :(得分:4)

正则表达式自由空间'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';

答案 1 :(得分:3)

这可能是模板解析器的一部分。

\{loop(?: name){0,1}=\${0,1}(.*?)\}
--------------------

匹配{loop name{loop?:告诉解析器不要将该子模式放在matches数组中。 {0,1}标记它可以显示为零或一次。

\{loop(?: name){0,1}=\${0,1}(.*?)\}
                    ---------------

匹配等号,然后是可选的美元符号($),后跟一些文字,很可能是变量名称,最后是}

{0,1}的实例可能已替换为?

答案 2 :(得分:2)

/ - 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结束。