2014-10-29 126 views
2

之間的一切,我需要一個正則表達式嚮導的幫助,或某人誰知道比我更瞭解這個(這意味着有大量的考生:)PHP的preg_match斜線

我想匹配的第一之間發生的一切和第二斜線,不包括斜線,或什麼,如果沒有開始和結尾的斜線:

$subject = '/1234-abcd/blahblah'; 
$pattern = '/^\/(.*)\//'; 
preg_match($pattern, $subject, $matches); 
print_r($matches); 

下面是結果:

Array 
(
    [0] => /1234-abcd/ 
    [1] => 1234-abcd 
) 

我接近。 $ matches [1]有我之後的結果,但它不是將它作爲其第一個數組項(而是第一個捕獲的子模式)。

如何排除此正則表達式模式中的起始和結尾斜槓?

謝謝!

回答

5

你可以使用這個表達式:

$pattern = '#(?<=/)[^/]+#'; 

,並使用preg_match_all代替preg_match

PS:注意,你也可以使用explode通過/拆分輸入,並完全避免使用正則表達式。

+1

感謝您的回答!該模式匹配斜線後的所有內容,類似於使用由'/'分隔的'explode'。相反,是否有可能使用正則表達式來捕獲第一次和第二次斜槓之間的第一次出現? 編輯:沒關係!我看到了使用'preg_match_all'的結果。當使用'preg_match'時,它完全符合我的需要。非常感謝!! – dcmalk 2014-10-29 19:15:44

+0

爲此,您可以使用:'preg_match('#(?<= /)[^ /] +#',$ input,$ m); echo $ m [0];' – anubhava 2014-10-29 19:19:36