2016-05-05 82 views
-1
([^/]+)/(thumb)\.(jpg)$ 
([^/]+/)?(thumb)\.(jpg)$ 

我知道?表示零次或一次。 thumb之前是否有/這意味着它發生一次?這些正則表達式匹配不同的字符串嗎?

+0

是的,他們可能會匹配不同的輸入。 '/'只是一個字面斜槓 – anubhava

+0

regexr.com說第二個是壞的。錯誤:未轉義正斜槓。 –

回答

1

是的,它們匹配不同的東西。

例如,這一個:thumb.jpg

?使得整個子表達式可選:

([^/]+/)?(thumb)\.(jpg)$ 

的字符串相匹配。

另一個沒有。

([^/]+)/(thumb)\.(jpg)$ 
    ^

正如您所見,/是靜態的,所以它必須存在。

另外,在它之前至少必須有一個不是/的字符。這就是+的含義。

1

是的,第一個表達式在字符串中需要/,並且至少有一個字符在它之前不等於/

在第二個表達式中,它不是必需的。例如,thumb.jpg將匹配第二個,但不是第一個。

最後,第一個表達式匹配的每個字符串也會匹配第二個表達式。

相關問題