如何阻止这种贪婪

时间:2012-06-05 19:13:21

标签: php regex preg-match

我有以下正则表达式:

#^/workorder/(.*)/#

提供以下URI:

/workorder/archive/2/

来自preg_match()的$ matches变量返回archive/2/

为什么正则表达式中的最后一个/阻止(.*)贪婪?当找到/分隔符时,我添加什么才能使正则表达式停止?

3 个答案:

答案 0 :(得分:3)

(.*)替换为(.*?)以使其不贪婪。

以下是一个很好的解释:Greedy and Non-Greedy Matches

答案 1 :(得分:3)

这样就可以了。

^/workorder/([^/]*)/

答案 2 :(得分:2)

要使它不贪婪(懒惰)使用

^/workorder/(.*?)/

但是这将使用对性能不利的回溯。使用

^/workorder/([^/]*)/

快点吃蛋糕