2017-06-19 22 views
0

有這樣的文字:如何使用python regexp從字符串中提取圖像名稱?

body = """Some junk texts here. 
<img src="/images/15244/somerandomname.jpg" class="news-img"> 
More texts here""" 

我不知道我該怎麼使用Python正則表達式提取somerandomname.jpg

我想出了是這樣的:

import re 
regex = re.findall('/images/(\d+)/(\w+).jpg', body) 

但它返回一個空列表。

+2

我想你確切的代碼,我得到這個'[( '15244', 'somerandomname')]' 嘗試的表達和捕獲前加'r' .jpg也是:'regex = re.findall(r'/ images /(\ d +)/(\ w + \ .jpg)',body)'。 – Morb

+0

同樣在這裏。我用你想要的一個元組獲得了一個列表(除了'somerandomname'而不是'somerandomname.jpg')。 編輯:@Babr你可以告訴你如何執行你的代碼? – gonczor

回答

3

re.findall如果未在模式中定義捕獲組((...)),或者捕獲的組(如果已定義),則返回全部匹配項。既然你已經捕獲了組,後者發生。

刪除捕獲組,以獲得整場比賽:

regex = re.findall('/images/\d+/\w+.jpg', body) 

演示:https://ideone.com/n1f9R8

1

可以使用

regex = re.findall('/images/(\d+)/([^"]+)', body) 
image_src = regex[0][1] 
0

你的代碼的工作,因爲你只是想捕捉的名稱這將工作。

import re 
body = """Some junk texts here. 
<img src="/images/15244/somerandomname.jpg" class="news-img"> 
More texts here""" 
regex = re.findall(r'/images/\d+/(\w+.jpg)', body) 
print regex 
1

你只需要將圖片名稱部分組合。

檢查這個表達式也將所有其他的擴展工作即jpg,png,ttf etc...

re.findall('/圖像/ \ d + /(\ W + \ W {3,4}),體)
輸出:[ 'somerandomname.jpg']

相關問題