【发布时间】:2014-05-11 05:46:01
【问题描述】:
在 WordPress 重写中,我经常看到这样的例子:
$wp_rewrite->add_rewrite_tag('%issue_project%', '(.+?/)?', 'issue_project=');
它在正则表达式的末尾有一个? 标记。有些没有。有什么区别?
【问题讨论】:
标签: regex wordpress url-rewriting
在 WordPress 重写中,我经常看到这样的例子:
$wp_rewrite->add_rewrite_tag('%issue_project%', '(.+?/)?', 'issue_project=');
它在正则表达式的末尾有一个? 标记。有些没有。有什么区别?
【问题讨论】:
标签: regex wordpress url-rewriting
这意味着一个懒惰而不是一个贪婪的正则表达式。看这里。
What do lazy and greedy mean in the context of regular expressions?
.+ 表示一个或多个字符 -- 任何字符
.+/ 表示以找到的最后一个/ 结尾的一个或多个字符。所以给定abc/def/gh/ .+ 匹配abc/def/gh。
.+?/ 表示匹配最短序列的一个或多个字符,而不是最长的。所以给定abc/def/gh/ .+ 匹配abc。
括号表达式后面的(whatever)? 尾随? 使该表达式可选。 (whatever)? 与(whatever){0,1} 的意思相同,即接受(whatever) 的0 次或1 次重复。
【讨论】:
(.+?/)? 是什么意思?