2011-11-05 92 views
0

我不知道要添加到我的正則表達式中才能使其僅匹配「確切」模式。 #users/(.+?)/#與此字符串users/john/someweirdstuff/將會匹配。preg_match_all匹配得太多

我越來越'john'而不是'john/someweirdstuff'(這是向正確的方向邁出的一大步),但我不希望它匹配。因爲字符串(它們應該是URL)是不一樣的。

所以基本上,我該怎麼後面加我REG EXP,使它說「應該沒有什麼最後的斜線後」

+2

您應該添加一些代碼,並給出有關URL的示例以及與之匹配的內容。 – hakre

+0

您可能只需在末尾添加'$',以匹配字符串的末尾。 –

回答

1

您應該使用字符串的末相匹配的$字符。

你也應該避免匹配「任何字符(.)」,你應該匹配「,這是不是一個斜槓([^/])的任何字符。如示例所示)。

還要注意我省略了問號(?),在這種情況下問號改變性格從貪婪(匹配儘可能)懶惰(匹配儘可能少)匹配

使用它像這樣:

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

所以我在閱讀文檔後試過。但它仍然會匹配,它會使我的通配符獲取'john/someweirdstuff' –

+0

請參閱我對@GerbenJacobs的解答。 –

+0

不錯,那個工程。謝謝! –

0

如果你想說「最後一次斜線後應該沒有任何內容」,請說「該字符串在最後一次斜線後結束」,即#users/(.+)/$#。收集問號也應該起作用,使加號「貪婪」,即儘可能匹配。