正則表達式刪除 URL 路徑並保留 URL 的最後一個 slug
我有一個文件,其中包含不同的 HTML 標記,並且多個 img src URL 分佈在其中:
<img src="https://www.example.com/parent-folder-1/subfolder-1/image1.png"> <img src="https://www.example.com/parent-folder-2/subfolder-2/image2.png"> ... <img src="https://www.example.com/parent-folder-100/subfolder-100/image100.png">
我提到
parent-folder-N
只是為了有個想法,這些 URL 沒有特定的模式,它們可能都有不同的子文件夾,但它們在開始時具有與源相同的 URLhttps://www.example.com/
我正在嘗試
https://www.example.com/parent-folder-N/subfolder-N/imageN.png
用 local path替換所有提及的內容imageN.png
,因此所有這些都將變為:<img src="image1.png"> <img src="image2.png"> ... <img src="image100.png">
所以基本上它會查看完整的 URL 路徑,並且只保留最後一個
imageN.png
.例如,這些是我試圖用正則表達式查找
https://i.imgur.com/u9JgF6B.png
並替換為的 URL 部分[nothing]
,所以最後我只剩下imageN.png
slugs。是否有可能以某種方式使用正則表達式來實現這一點?
PS:我嘗試使用這樣的正則表達式
^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]example+)\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$
,這與 example.com 匹配,但我不知道如何匹配之後的 URL 路徑,example.com/...
直到最後一個/
之前imageN.png
PPS:圖像總是可以有副檔名
.png
或.jpg
我不知道你對使用正則表達式的意思,但這是如何做到這一點的
sed
:sed 's!https://www.example.com/.*/!!' file.html
或者(假設您的連結不包含一個
!
字元):sed '/https:\/\/www.example.com\//{y@/@|@;s/".*|/"/}' test
使用
-i
選項 (Availabe inGnu sed
) 將更改應用到 html 文件。與
perl
:perl -pe 's@(?:https://www.example.com/.*/)(.*[.])(png|jpg)@$1$2@' test.html
perl
可以-i
選擇直接在文件中啟用編輯。
到目前為止,我還不是正則表達式的專家,但這應該可行:
(http).*\/
解釋
(http)
匹配字元串“http”
.*
匹配任何字元 0 次或更多次,直到
\/
匹配最後一個斜杠。