2016-03-31 18 views
-3

は、次のことを考えてみましょう:Pythonの正規表現抽出テキスト

私はこの次は、プリントアウトを取得するために正規表現を使用しないだろうか
<div id=foodmenu> 
    <a href="randomlink">Hot Dog</a> 
</div> 
<div id=foodmenu> 
    <a href="randomlink">Burger</a> 
</div> 
<div id=foodmenu> 
    <a href="randomlink">Chips</a> 
</div> 
<div id=foodmenu> 
    <a href="randomlink">Coke</a> 
</div> 

Hot Dog 
Burger 
Chips 
Coke 
+1

必須:http://stackoverflow.com/q/1732348/3001761。 ** HTMLパーサを使用する**、それは彼らのためだ。 – jonrsharpe

+1

[すべてのタグを削除](https://regex101.com/r/hX4wH7/3) – Shafizadeh

+0

@Shafizadeh興味、私はそれを持っていないだろう。あなたは必要なデータをすべて**キャプチャします**! – Druzion

答えて

0

正規表現でHTMLを解析しないでください。あなたが主張するならば:

<a[^>]*>(.*?)</a> 

データはキャプチャグループ#1

Live Demo on Regex101


<a>タグとの間のデータは、この正規表現を使用して、別の行に及び/又はくぼみを含む場合:

<a[^>]*>\s*((?:.|\n)*?)</a> 

Live Demo on Regex101

+0

正規表現なしでこれをどうすればできますか? – Anonymous

+0

@Anonymous ** HTMLパーサー**を使用してください! – Druzion

1

BeautifulSoup HTMLパーサーを使用して)非正規表現、HTMLパーサーベースのアプローチ:

from bs4 import BeautifulSoup 

data = """ 
<div id=foodmenu> 
    <a href="randomlink">Hot Dog</a> 
</div> 
<div id=foodmenu> 
    <a href="randomlink">Burger</a> 
</div> 
<div id=foodmenu> 
    <a href="randomlink">Chips</a> 
</div> 
<div id=foodmenu> 
    <a href="randomlink">Coke</a> 
</div>""" 

soup = BeautifulSoup(data, "html.parser") 
print([link.get_text() for link in soup.select("#foodmenu > a")]) 

プリント:

['Hot Dog', 'Burger', 'Chips', 'Coke'] 
+0

ありがとうございます。 – Anonymous