2012-09-11 169 views
1

我有如下所示的URL之間匹配...的正則表達式最後一個字符和字符串

/images/home/img/digits.png

我需要使用正則表達式或一些相當於從URL獲得'數字'。我使用正則表達式,因爲相同的代碼將被複制,並且文件名將始終是不同的長度。

我試過使用正則表達式,我得到了第一/之後和.png之前的所有內容,但是我需要在.png的最後/和之前的所有內容。

這是我一直想:

(?<=/)(.*)(?=.png) 
+0

http://regexr.com?3244n最好的一個;) – Breezer

回答

5
"/images/home/img/digits.png".match(/\/([^\/]*)\.png/i) 

回報

["/digits.png", "digits"] 
4

你真的很近。 (?<=/)([^/]*)(?=\.png$)應該工作。

三件事我加做到以下幾點:

  1. [^/]*比賽不包括'/'任何字符(S),所以比賽不能inlcude任何斜槓。
  2. \.png之前阻止.匹配任何字符。
  3. $將它錨定到字符串的末尾。

此外,如果你只是尋找匹配的數字部分,你不關心的休息,你不需要圍繞[^/]*括號,因爲先行和回顧後你使用AREN」量詞包括在比賽中。所以在上面的模式中,唯一會返回的是[^/]*。這可以在隱式組0中找到,如果您使用的是.NET,則可以在Match.Value中找到。

總結所有這些,我會使用的是(?<=/)[^/]*(?=\.png$)。如果您還想匹配"/images/home/img/digits.PNG",那麼還需要添加一個不區分大小寫的標誌。

+0

好了,但在第一次張貼的一句話回答,然後編輯它分成12我莫名其妙地皺眉在線答案:) –

+0

爲什麼?我給了一個答案,然後修改它更有用,因爲我想到更多的東西。 –

+0

我在開玩笑,這就是全部:) –

相關問題