preg_match通配符,至少需要一个字符

时间:2016-11-24 14:26:42

标签: php regex preg-match

下面的preg_match与通配符匹配'empty'(0个字符)。我想禁用它:

preg_match('/site.com\/subsection\/.*?/', $page_url);

所以上面的内容应与site.com/subsection/subpage相匹配,但不应与根目录site.com/subsection /

相匹配

如何调整上面的正则表达式?提前谢谢!

1 个答案:

答案 0 :(得分:4)

模式末尾的.*?匹配空字符串。您需要使用.+

使其与一个或多个字符匹配
'/site\.com\/subsection\/.+/'
                         ^

现在,site.com/subsection/后需要至少1个字符。

请注意,必须对点进行转义以匹配文字点。

另外,如果模式本身有很多斜杠,那么使用/以外的正则表达式分隔符(如下OcuS中建议comments)可能是个好主意。我通常使用tildes:

'~site\.com/subsection/.+~'