在python中查找带正则表达式的字符串

时间:2015-09-26 01:06:20

标签: python regex

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

我有一个变量,其中包含域列表,域名如下所示:

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

...

我想要mp3文件名(在本例中为Hotbird,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

2 个答案:

答案 0 :(得分: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

以下是基于正则表达式的示例:

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

我们使用捕获组(\w+)来捕获由一个或多个aplhanumeric字符组成的mp3文件名,后面跟着一个点,mp3位于网址的末尾。

答案 1 :(得分:0)

怎么样?

([^ /] * MP3)$

我认为这可能有用

基本上它说......

从行尾开始匹配,以mp3开头,然后将所有内容匹配回第一个斜杠。

认为它会表现良好。