preg_match_all匹配太多了

时间:2011-11-05 20:56:47

标签: php preg-match-all

我不知道要添加到我的正则表达式中,以使其仅与“确切”模式匹配。 <{1}}此字符串#users/(.+?)/#将匹配。

我收到'users/john/someweirdstuff/'而不是'john'(这是向正确方向迈出的一小步),但我不希望它完全匹配。因为字符串(应该是URL)不一样。

所以基本上,我在reg exp后面加上什么来说它“在最后一次斜线之后应该没有任何内容”

2 个答案:

答案 0 :(得分:1)

您应该使用与字符串结尾匹配的$字符。

你还应该避免匹配“任何字符(.)”,你应该匹配“任何不是斜杠的字符([^/])。如示例所示。”

另请注意,我省略了问号(?),此实例中的问号将字符匹配从贪婪(尽可能匹配)更改为延迟(尽可能少匹配)。

像这样使用它:

#users/([^/]+)/$#

答案 1 :(得分:0)

如果你想说“最后一次斜线后应该没有任何内容”,请说“字符串在最后一次斜线后结束”,即#users/(.+)/$#。提示问号也应该有效,使加号“贪婪”,即尽可能多地匹配。