任何人都可以解释这个正则表达式中每个字符的含义:
...preg_match('/\{loop(?: name){0,1}=\${0,1}(.*?)\}/', $html, $code)...
答案 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结束。