다양한 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
.
이 작업을 수행하기 위해 정규식을 사용할 수 있습니까?
추신: 이와 같은 정규식을 사용해 보았 더니 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회 이상 일치시킵니다.
\/
마지막 슬래시와 일치합니다.