2015-09-26 72 views
4

我是python中的新手,我试图在python中剪切另一个字符串中的一段字符串。 我看了其他类似的问题,但我找不到我的答案。在python中查找带正则表达式的字符串

我有包含域名列表中的变量,它的域是这样的:我想要的MP3文件名(

http://92.230.38.21/ios/Channel767/Hotbird.mp3 http://92.230.38.21/ios/Channel9798/Coldbird.mp3

....

在这个例子中热鸟,Coldbird等)

我知道我必须能够用re.findall()完成它,但我不知道需要使用的正则表达式。

有什么想法?

更新: 这里是我使用的部分:没有工作

for final in match2: 
     netname=re.findall('\W+\//\W+\/\W+\/\W+\/\W+', final) 
     print final 
     print netname 

。然后我试图做这一个只切断IP地址(92.230.28.21),但不是名称:

for final in match2: 
     netname=re.findall('\d+\.\d+\.\d+\.\d+', final) 
     print final 
+1

你能展示你已经试过的任何代码吗? – idjaw

回答

5

你可能只是使用str.split()

>>> urls = ["http://92.230.38.21/ios/Channel767/Hotbird.mp3", "http://92.230.38.21/ios/Channel9798/Coldbird.mp3"] 
>>> for url in urls: 
...  print(url.split("/")[-1].split(".")[0]) 
... 
Hotbird 
Coldbird 

而且这里有一个例子regex-基础的方法:

>>> import re 
>>> 
>>> pattern = re.compile(r"/(\w+)\.mp3$") 
>>> for url in urls: 
...  print(pattern.search(url).group(1)) 
... 
Hotbird 
Coldbird 

在这里我们使用的是捕获组(\w+)捕获的mp3文件名包括一个或多个字符aplhanumeric接着是一个点,mp3在网址的结尾处。

+0

它按预期工作。谢谢 ! –

+0

@SamaAzari很高兴帮助。请参阅http://stackoverflow.com/help/someone-answers。此外,仔细查看您之前的问题,看看是否有任何答案值得接受。谢谢! – alecxe

0

怎么样?

([^ /] * MP3)$

我觉得可能从该行的工作进行到底

基本上它说...

匹配,与MP3开始,然后匹配一切都回到第一个斜线。

认为它会表现良好。

相关问题