2013-07-07 180 views
1

我是一個業餘程序員,也是本網站的新成員。我已經搜索了這個問題,但沒有在互聯網或本網站的其他任何地方找到它。Python正則表達式查找語句

我試圖抓住開放和接近段落html標記之間的所有單詞(<p> & </p>)。我的findall語句適用於特定在線文章所有段落中的所有單詞,除了單引號或雙引號之外。完全有可能有更好的方法來做我想做的事情,或者可以很容易地調整這個陳述以包含帶引號的段落。任何建議將不勝感激!

的findall聲明:

aText = findall("<p>[A-Za-z0-9<>=\"\:/\.\-,\+\?#@'<>;%&\$\*\^\(\)\[\]\{\}\|\\!_`~ ]+</p>",text) 
+1

步驟1)在你喜歡的搜索引擎「美麗的湯」的搜索。第2步)按照其中一個清晰的示例從HTML元素中提取文本。沒有第3步,它實際上是一個相當優雅的圖書館,只是爲了這個目的:) –

回答

1
>>> t = "<p>there isn't much here</p>" 
>>> re.findall(r'<p>(.+?)</p>',t) 
["there isn't much here"] 

例與"的嵌入式:

>>> t = r"<p>there isn't much \"to go by\" here</p>" 
>>> re.findall(r'<p>(.+?)</p>',t) 
['there isn\'t much \\"to go by\\" here'] 

通常+貪婪預選賽中,通過在結尾處增加?我們使它非貪心,它試圖實現一個最小匹配。所以它會消耗部分字符串,直到</p>可以匹配。

+0

這將工作(我投票表示正確性),但您需要謹慎對待其限制。結束'

'標籤是可選的(儘管如果缺失無效)和'

'元素可以具有像'id'和'class'這樣的屬性來打破這個正則表達式。 –

+0

謝謝!我會upvote,但它需要15個信譽點 – user2557391

+0

@JasonSperske謝謝,我沒有想到這一點。 – HennyH

1

要與像美麗的湯的HTML解析引擎做到這一點:

from BeautifulSoup import BeautifulSoup 

html_doc= """ 
<p> 
paragraph 1 
</p> 

<p> 
paragraph 2 
</ap> 

<p> 
paragraph 3 
</p> 
""" 

soup = BeautifulSoup(html_doc) 

soup.findAll('p')