2011-06-27 9 views
0

単語文書をhtmlとして保存して生成されたhtml文書を解析する必要があります。html文書の脚注を解析する

より簡単かもしれない私はかなり成功したHTMLの敏捷性パックを使用してきたが、この例では私はこの1つの部分のための正規表現を使用して考え出し(意見?)

それはその脚注の1つにを変換するときのWordには、次のコードを生成しますHTML

<a href="#_ftn2" name="_ftnref2" title=""><span 
class=MsoFootnoteReference><span class=MsoFootnoteReference><span 
style='font-size:10.0pt'>[2]</span></span></span></a> 

この出力は、HREFを持つすべての脚注のために一貫している=と名前が変更ならびに[2]のテキスト。

私は_ftn2要素と[2]要素を抽出する必要があります。

これまでのところ、私はこれらすべてのspanタグと第2ビットを解析し、トラブルのビットを抱えている名前のグループ

<a href="#(?<name>_ftn\d).*>(<span class=MsoFootNoteReference>) 

に_ftn2の一部を抽出します、次の正規表現を持っています。

正規表現を使用する方が簡単か、この部分にHAPを使用し続ける必要がありますか?単語は、ネストされた、同一のspanタグを生成する理由

アンはさておき、誰でも入力が正確にその形式を次のなら、あなたはかなり緩い正規表現で逃げることができ

<span class=MsoFootnoteReference> 
+0

私はクラスMsFootNoteReferenceのすべてのスパンを取得し、親hrefをチェックします... – philipp

答えて

1

知っているん。あなただけが抽出し、それらの間のすべてのゴミを食べに非貪欲式を採用したい部分以外のすべてを無視する必要があります。

<a href="#(?<name>_ftn\d).*?(?<number>\[\d+\]).*?<\/a> 

あなたはすべての余分を食べるために、非貪欲.*?を使用することができますマークアップはあなたの次の\[\d+\]パターンと一致しないためです。あなたは実際に最後に.*?<\/a>ビットを必要としません、それは主に対称性と少しのパラノイアのためです。

おそらく、正規表現を使用してHTMLを分割するのは理にかなったほんのわずかなケースの1つです。あなたはHTMLパーサでこのようなことをすることができますが、その後は、似ているツイストなXPath式、DOM操作、またはSAXイベントの悪夢となります。そして、あなたは恨みで食べられるかもしれません。