2016-11-15 40 views
1
之間獲取文本

,當我讀到一文中,我有這樣的一些文字的行<h3 class="heading">General Purpose</h3>串,現在我想這是唯一從上面General Purpose值..Python的正則表達式兩個字符串

d = re.search(re.escape('<h3 class="heading">')+"(.*?)"+re.escape('</h3>'), str(data2)) 
if d: 
    print(d.group(0)) 
+0

你能讓你的問題更清楚嗎?在你的問題中加入data2,並且提到你想從data2中提取什麼。 – MYGz

+0

這是一個示例字符串,還是您實際上有HTML? http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags –

+0

我想你想要d.group(1)。 0是整個匹配的字符串,1是第一個加括號的組。 – roarsneer

回答

1

0組包含整個匹配;你想組1的內容:

print(d.group(1)) 

但是總體來說,使用正則表達式解析HTML是不是一個好主意(雖然實際地說,嵌套h3標籤應該是相當少見)。

+0

感謝您的回覆組(1)也在工作... – kattaprasanth

1
import re 

text="""<h3 class="heading">General Purpose</h3>""" 
pattern="(<.*?>)(.*)(<.*?>)" 

g=re.search(pattern,text) 
g.group(2) 

輸出:

'General Purpose' 

Demo on Regex101

如果它是一個美麗的湯對象,然後它更簡單,以獲得的價值。你不會需要正則表達式。

from bs4 import BeautifulSoup 

text="""<h3 class="heading">General Purpose</h3>""" 
a=BeautifulSoup(text) 
print a.select('h3.heading')[0].text 

輸出:

General Purpose 
+0

感謝您的答覆,它最後工作 – kattaprasanth

+0

如果它已經是一個美麗的對象,那麼你不必使用額外的正則表達式來提取數據。您可以使用beautifulsoup方法來提取html數據。 – MYGz

+0

@kattaprasanth:在您評論您使用的是BeautifulSoup之前,我寫了我的回答。在這種情況下,請刪除我的答案中的「已接受」複選標記,並將其添加到此答案中,因爲它顯然是更好的答案。 –

0

警告:只能在Python,而不是PCRE或JS(不支持JS回顧後)。

(?<=\<\h3 class=\"heading\"\>).*?(?=\<\/h3\>) 
+0

感謝您的更新 – kattaprasanth

相關問題