Python 如何只在最后一次正则表达式/(如果存在多次)
如果前面没有其他斜杠,我只需要删除最后一个斜杠后面的字符串 我试图使用这个正则表达式Python 如何只在最后一次正则表达式/(如果存在多次),python,regex,python-3.x,Python,Regex,Python 3.x,如果前面没有其他斜杠,我只需要删除最后一个斜杠后面的字符串 我试图使用这个正则表达式/(?:(?!/)+$,但它并没有删除我想要的内容 我需要转换以下网址 发件人: http://69.162.64.252:8692/live http://rvn01.painelstream.net:8638 http://2.stm-ip.com:8578/;stream.mp3 http://stm51.streamingbage.net.br:18164 http
/(?:(?!/)+$
,但它并没有删除我想要的内容
我需要转换以下网址
发件人:
http://69.162.64.252:8692/live
http://rvn01.painelstream.net:8638
http://2.stm-ip.com:8578/;stream.mp3
http://stm51.streamingbage.net.br:18164
http://audio1.cmaudioevideo.com:8346/stream
http://radio.radionaturezafm.com.br:9994
http://srv-stream.sisdera.com:8000/SOCIEDADECARNAVA
http://stm1.srvaudio.com.br:9422/;type=mp3
https://streaming.speedrs.com.br/radio/8050/jaboticaba
http://hts03.kshost.com.br:8014/live
预期:
http://69.162.64.252:8692
http://rvn01.painelstream.net:8638
http://2.stm-ip.com:8578
http://stm51.streamingbage.net.br:18164
http://audio1.cmaudioevideo.com:8346
http://radio.radionaturezafm.com.br:9994
http://srv-stream.sisdera.com:8000
http://stm1.srvaudio.com.br:9422
https://streaming.speedrs.com.br/radio/8050
http://hts03.kshost.com.br:8014
但实际结果是:
http://69.162.64.252:8692
http:
http://2.stm-ip.com:8578
http:
http://audio1.cmaudioevideo.com:8346
http:
http://srv-stream.sisdera.com:8000
http://stm1.srvaudio.com.br:9422
https://streaming.speedrs.com.br/radio/8050
http://hts03.kshost.com.br:8014
看看我的。试试这个
s = "http://69.162.64.252:8692/live"
gs = "/".join(s.split("/")[:-1])
输出
'http://69.162.64.252:8692'
一个没有使用正则表达式的简单解决方案。请注意,仅当url的长度超过2时,才会应用此选项:
urls = ['http://69.162.64.252:8692/live',
'http://rvn01.painelstream.net:8638',
'http://2.stm-ip.com:8578/;stream.mp3',
'http://stm51.streamingbage.net.br:18164',
'http://audio1.cmaudioevideo.com:8346/stream',
'http://radio.radionaturezafm.com.br:9994',
'http://srv-stream.sisdera.com:8000/SOCIEDADECARNAVA',
'http://stm1.srvaudio.com.br:9422/;type=mp3',
'https://streaming.speedrs.com.br/radio/8050/jaboticaba',
'http://hts03.kshost.com.br:8014/live']
for url in urls:
if url.count('/') > 2:
url = url[:url.rindex('/')]
print(url)
输出
http://69.162.64.252:8692
http://rvn01.painelstream.net:8638
http://2.stm-ip.com:8578
http://stm51.streamingbage.net.br:18164
http://audio1.cmaudioevideo.com:8346
http://radio.radionaturezafm.com.br:9994
http://srv-stream.sisdera.com:8000
http://stm1.srvaudio.com.br:9422
https://streaming.speedrs.com.br/radio/8050
http://hts03.kshost.com.br:8014
您可以在包含两个以上/
的url上使用rsplit('/',1)
,这将从url末尾删除第一个/
urls = ['http://69.162.64.252:8692/live', 'http://rvn01.painelstream.net:8638', 'http://2.stm-ip.com:8578/;stream.mp3', 'http://stm51.streamingbage.net.br:18164', 'http://audio1.cmaudioevideo.com:8346/stream', 'http://radio.radionaturezafm.com.br:9994', 'http://srv-stream.sisdera.com:8000/SOCIEDADECARNAVA', 'http://stm1.srvaudio.com.br:9422/;type=mp3', 'https://streaming.speedrs.com.br/radio/8050/jaboticaba', 'http://hts03.kshost.com.br:8014/live']
results = [url.rsplit('/', 1)[0] if url.count('/') > 2 else url for url in urls]
for result in results:
print(result)
输出
http://69.162.64.252:8692
http://rvn01.painelstream.net:8638
http://2.stm-ip.com:8578
http://stm51.streamingbage.net.br:18164
http://audio1.cmaudioevideo.com:8346
http://radio.radionaturezafm.com.br:9994
http://srv-stream.sisdera.com:8000
http://stm1.srvaudio.com.br:9422
https://streaming.speedrs.com.br/radio/8050
http://hts03.kshost.com.br:8014
对于正则表达式,您可以使用
(?<!/)/[^/]*$
(?
看
详细信息
(?-no/
之前不允许
/
-a/
字符
[^/]*
-0个或更多字符,而不是/
$
-字符串结束
使用.split(“/”[-1]您将获得最后一部分,如果您想要第一部分“/”。加入(您的string.split(“/”[:-1])您(?),但在Python中还有其他处理URL的方法,例如使用@WiktorStribiż有吗?我不知道其他方法如何ways@WiktorStribiżew如果您想添加答案,只需检查此问题的答案,请随意=)有人认为这是一个完全不相关的答案。也许你应该使用其他解决方案。http:/http:/http:/http:/not work