Python 基于url的正则表达式前瞻
在正则表达式中如何执行以下操作Python 基于url的正则表达式前瞻,python,regex,Python,Regex,在正则表达式中如何执行以下操作 >>> s=u'https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png' >>> s.split('/')[-1].split('.png')[0].replace('_','-').upper() 'R-18' 它应该是在最后一个/和png之间获取项目。下面的(我现在有的)太贪婪了-- 为什么不使用urllib和os.pa
>>> s=u'https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png'
>>> s.split('/')[-1].split('.png')[0].replace('_','-').upper()
'R-18'
它应该是在最后一个/
和png
之间获取项目。下面的(我现在有的)太贪婪了--
为什么不使用
urllib
和os.path
from urllib.parse import urlparse
s=u'https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png'
a=urlparse(s)
import os
p=a.path # /grc/images/ratings/hd/eirin/R-18.png
bn=os.path.basename(p) # R-18.png
print(os.path.splitext(bn)[0]) # R-18
对于python2,将第一次导入替换为
from six.moves.urllib.parse import urlprase
为什么不使用urllib
和os.path
from urllib.parse import urlparse
s=u'https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png'
a=urlparse(s)
import os
p=a.path # /grc/images/ratings/hd/eirin/R-18.png
bn=os.path.basename(p) # R-18.png
print(os.path.splitext(bn)[0]) # R-18
对于python2,将第一次导入替换为
from six.moves.urllib.parse import urlprase
您可以将/
定义为分隔符,并在否定字符类中使用它:
[^\/]*\.png$
Python:
re.search('[^\/]*\.png$', s).group().replace('_', '-')
或者,如果您只想捕获名称:
>>> re.search('([^\/]*)\.png$',s).group(1)
'R-18'
您可以将
/
定义为分隔符,并在否定字符类中使用它:
[^\/]*\.png$
Python:
re.search('[^\/]*\.png$', s).group().replace('_', '-')
或者,如果您只想捕获名称:
>>> re.search('([^\/]*)\.png$',s).group(1)
'R-18'
实际上,不需要正则表达式:
url = "https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png"
try:
last = url.split('/')[-1]
file = last.split('.')[0]
print(file)
except:
pass
这就产生了
R-18
如果你坚持:
import re
url = "https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png"
rx = re.compile(r'([^/.]+)\.png$')
match = rx.search(url)
if match:
print(match.group(1))
请参阅。实际上不需要正则表达式:
url = "https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png"
try:
last = url.split('/')[-1]
file = last.split('.')[0]
print(file)
except:
pass
这就产生了
R-18
如果你坚持:
import re
url = "https://cdn-a.sonyentertainmentnetwork.com/grc/images/ratings/hd/eirin/R-18.png"
rx = re.compile(r'([^/.]+)\.png$')
match = rx.search(url)
if match:
print(match.group(1))
请参阅。Do
[^/]*\.png$
请参阅Do[^/]*\.png$
请参阅