さまざまな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には特定のパターンはありません。すべて異なるサブフォルダを持つことができますが、ソースと同じURLで始まります。https://www.example.com/
https://www.example.com/parent-folder-N/subfolder-N/imageN.png
すべての言及をローカルパスに置き換えようとしているので、imageN.png
すべて次のようになります。
<img src="image1.png">
<img src="image2.png">
...
<img src="image100.png">
したがって、デフォルトでは完全なURLパスを見て、最後のスラグですimageN.png
。
たとえば、これはRegexを使用してhttps://i.imgur.com/u9JgF6B.png
見つけて置き換えようとするURLの一部であるため、[nothing]
最終的にはスラグだけが残りますimageN.png
。
これを行うために正規表現を使用できますか?
PS:このような正規表現を使ってみましたが、example.comと一致しましたが、最後のパスの前のURLを^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]example+)\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$
一致させる方法がわかりません。example.com/...
/
imageN.png
PPS:画像は常に拡張子を持つことができます.png
。.jpg
答え1
私はあなたが何を意味するのかわかりません。正規表現の使用ただし、これを行う方法は次のとおりですsed
。
sed 's!https://www.example.com/.*/!!' file.html
または(リンクに文字がないと仮定!
):
sed '/https:\/\/www.example.com\//{y@/@|@;s/".*|/"/}' test
htmlファイルに変更を適用するには、-i
オプション(で利用可能)を使用します。Gnu sed
そしてperl
:
perl -pe 's@(?:https://www.example.com/.*/)(.*[.])(png|jpg)@$1$2@' test.html
perl
-i
ファイルから直接編集を有効にするオプションがあります。
答え2
現時点では正規表現の専門家ではありませんが、次のようにすると機能します。
(http).*\/
説明する
(http)
文字列「http」と一致します。
.*
次に、ランダムな文字を0回以上一致させます。
\/
最後のスラッシュと一致します。