2016-11-24 79 views
2

下面的preg_match与通配符中的'empty'(0个字符)匹配。我想禁用:preg_match通配符,需要至少一个字符

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

所以上面的东西应该匹配site.com/subsection/subpage,但应该不匹配的根目录site.com/subsection/

我怎样才能调整正则表达式?提前致谢!

+2

尝试' '/site\.com\/subsection \ /.+/'' –

回答

4

模式末尾的.*?与空字符串匹配。你需要使它符合使用.+一个或多个字符:现在

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

,它需要至少1焦炭site.com/subsection/后。

注意点必须转义以匹配文字点。

此外,它可能是一个好主意,用比其他/正则表达式的分隔符(如OcuS建议如下comments)如果你在模式本身许多斜线。我通常使用波浪线:

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

谢谢,这似乎工作!允许时接受你的答案。 – dirk

+1

通过选择不同的分隔符而不是'/'来保存自己的一些字符。像'@site \ .com/subsection /[email protected]'。它还增加了更多的可读性恕我直言。 – OcuS

相关问题