我有如下所示的URL之間匹配...的正則表達式最後一個字符和字符串
/images/home/img/digits.png
我需要使用正則表達式或一些相當於從URL獲得'數字'。我使用正則表達式,因爲相同的代碼將被複制,並且文件名將始終是不同的長度。
我試過使用正則表達式,我得到了第一/之後和.png之前的所有內容,但是我需要在.png的最後/和之前的所有內容。
這是我一直想:
(?<=/)(.*)(?=.png)
我有如下所示的URL之間匹配...的正則表達式最後一個字符和字符串
/images/home/img/digits.png
我需要使用正則表達式或一些相當於從URL獲得'數字'。我使用正則表達式,因爲相同的代碼將被複制,並且文件名將始終是不同的長度。
我試過使用正則表達式,我得到了第一/之後和.png之前的所有內容,但是我需要在.png的最後/和之前的所有內容。
這是我一直想:
(?<=/)(.*)(?=.png)
"/images/home/img/digits.png".match(/\/([^\/]*)\.png/i)
回報
["/digits.png", "digits"]
你真的很近。 (?<=/)([^/]*)(?=\.png$)
應該工作。
三件事我加做到以下幾點:
[^/]*
比賽不包括'/'
任何字符(S),所以比賽不能inlcude任何斜槓。\
在.png
之前阻止.
匹配任何字符。$
將它錨定到字符串的末尾。此外,如果你只是尋找匹配的數字部分,你不關心的休息,你不需要圍繞[^/]*
括號,因爲先行和回顧後你使用AREN」量詞包括在比賽中。所以在上面的模式中,唯一會返回的是[^/]*
。這可以在隱式組0中找到,如果您使用的是.NET,則可以在Match.Value
中找到。
總結所有這些,我會使用的是(?<=/)[^/]*(?=\.png$)
。如果您還想匹配"/images/home/img/digits.PNG"
,那麼還需要添加一個不區分大小寫的標誌。
好了,但在第一次張貼的一句話回答,然後編輯它分成12我莫名其妙地皺眉在線答案:) –
爲什麼?我給了一個答案,然後修改它更有用,因爲我想到更多的東西。 –
我在開玩笑,這就是全部:) –
http://regexr.com?3244n最好的一個;) – Breezer