Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于url的正则表达式前瞻_Python_Regex - Fatal编程技术网

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$
请参阅