2016-07-21 2 views
0

正規表現と解析したい次のテキストがあります。私はクラス「ポストセル」でtdの中にすべてを持っていきたいです。私はこのコードを使用していますが、それは私に何も与えません。正規表現でhtmlを解析すると、時々動作しない

re.finditer('<td class="postcell">(.+?)</td>', doc) 

私はDEFあなたが/を脱出するのを忘れ

<td class="postcell"> 
<div> 
<div class="post-text" itemprop="text"> 
<p>Let us consider</p> 
<pre class="lang-py prettyprint"><code>x = ['1', '2', '3', '4', '5'] 
y = ['a', 'b', 'c', 'd', 'e'] 
</code></pre> 
<p>How do I get the required output <code>z</code>?</p> 
<pre class="lang-py prettyprint"><code>z = [('1', 'a') , ('b', '2') , ('c', '3') , ('d', '4') , ('e', '5')] 
</code></pre> 
</div> 
<div class="post-taglist"> 
<a href="https://stackoverflow.com/questions/tagged/python" class="post-tag js-gps-track" title="show questions tagged 'python'" rel="tag">python</a> <a href="https://stackoverflow.com/questions/tagged/list" class="post-tag js-gps-track" title="show questions tagged 'list'" rel="tag">list</a> 
</div> 
<table class="fw"> 
<tbody><tr> 
<td class="vt"> 
<div class="post-menu"><a href="https://stackoverflow.com/q/9853438" title="short permalink to this question" class="short-link" id="link-post-9853438">share</a><span class="lsep">|</span><a href="/posts/9853438/edit" class="suggest-edit-post" title="">improve this question</a></div> 
</td> 
<td align="right" class="post-signature"> 
<div class="user-info user-hover"> 
<div class="user-action-time"> 
<a href="/posts/9853438/revisions" title="show all edits to this post">edited <span title="2012-03-24 16:42:59Z" class="relativetime">Mar 24 '12 at 16:42</span></a> 
</div> 
<div class="user-gravatar32"> 
<a href="https://stackoverflow.com/users/35070/phihag"><div class="gravatar-wrapper-32"><img src="https://www.gravatar.com/avatar/6f92354195e8874dbee44d5c8714d506?s=32&amp;d=identicon&amp;r=PG" alt="" width="32" height="32" /></div></a> 
</div> 
<div class="user-details"> 
<a href="https://stackoverflow.com/users/35070/phihag">phihag</a> 
<div class="-flair"> 
<span class="reputation-score" title="reputation score 132,147" dir="ltr">132k</span><span title="31 gold badges"><span class="badge1"></span><span class="badgecount">31</span></span><span title="252 silver badges"><span class="badge2"></span><span class="badgecount">252</span></span><span title="308 bronze badges"><span class="badge3"></span><span class="badgecount">308</span></span> 
</div> 
</div> 
</div> </td> 
<td class="post-signature owner"> 
<div class="user-info "> 
<div class="user-action-time"> 
     asked <span title="2012-03-24 16:40:17Z" class="relativetime">Mar 24 '12 at 16:40</span> 
</div> 
<div class="user-gravatar32"> 
<a href="https://stackoverflow.com/users/1168528/karthik-reddi"><div class="gravatar-wrapper-32"><img src="https://www.gravatar.com/avatar/acce3b34402cd7646c175c273dee1616?s=32&amp;d=identicon&amp;r=PG" alt="" width="32" height="32" /></div></a> 
</div> 
<div class="user-details"> 
<a href="https://stackoverflow.com/users/1168528/karthik-reddi">Karthik Reddi</a> 
<div class="-flair"> 
<span class="reputation-score" title="reputation score " dir="ltr">10</span><span title="2 bronze badges"><span class="badge3"></span><span class="badgecount">2</span></span> 
</div> 
</div> 
</div> 
</td> 
</tr> 
</tbody></table> 
</div> 
</td> 
+1

[XML/HTMLの解析には正規表現を使用しないでください](http://stackoverflow.com/a/1732454/1934349)。 – paulotorrens

+1

ここでは少なくとも百万回は言われています:**正規表現でHTMLやXMLを解析しないでください**。 HTML DOMパーサを使用します。私は正規表現を使ってHTML/XMLを解析できないのですがなぜこれができないのかという何百万という言及を見つけるのはなぜですか?なぜなら、彼らは破損した窓をハンマーで修理できない理由を尋ねるのと同じ人々だと私は疑う。 –

+0

その答えに対する最善のコメント: "私は、アシスタントの投稿を辞さないと、Regex OfficerとHTMLを解析しないでください。何度も言いますが、毎日やってくることはありません。あなたがしなければならないのは、正規表現を使ってHTMLを解析するということです。それは生命と死ではなく壊れたコードだけです。だから一緒に辞めることができます= /私はそれを言った回数を失った:**正規表現でHTMLやXMLを解析しないでください** –

答えて

1

beautifulsoup使用したくありません。

re.finditer('<td class="postcell">(.+?)<\/td>', doc)

他のコメンターは、それが一般的なに正規表現とHTMLを解析することは不可能だという権利です。あなたの場合、十分に良いかもしれません。その正規表現がネストするのが盲目であるような制限を知っているだけなので、あなたのポストセルの1つに<\td>がある場合、あなたのマッチは早く終了します。

+0

お返事ありがとうございます!なぜ私はそれが壊れるかもしれないのだろうかと思っています?ネストされたタグのためですか? – Erin

+0

stackoverflowを削っていると、マークダウンやその他の書式設定のために、投稿に '​​'タグがあると困ってしまうかもしれません。マークダウンが実際にそのタグを導入するかどうかはわかりません。 –

+0

たとえば、正規表現はと一致します。 '' ' –

関連する問題