-1

このテキストを抽出する必要があります:

Line 1 text.
Line 2 text. Line 2 some more text.
Line 3 text,
Line 4 text

このHTMLから:

...
<tr><td class="td_my_custom_text">Line 1 text. 
<br>Line 2 text. Line 2 some more text.
<br>Line 3 text, 
<br>Line 4 text
<br></td></tr><tr><td>&nbsp;</td></tr>
...

この正規表現の使用:<td\ class="td_my_custom_text">[\s\S]*?</td>私は何かを近づけることができましたが、十分に近づいていません。<td class="td_my_custom_text"><br>そして</td>まだ中にいて、私は立ち往生しています。

  1. それらを取り除くために私の正規表現で何を変更する必要がありますか?
  2. このジョブを自動化し、抽出したデータを新しいファイルにコピーするためのWindowsツールはありますか?私はこのような5000以上のファイルを持っており、正規表現またはhtmlパーサーを使用して小さなプログラムを作成することを考えていますが、最初にもっと良いアプローチがあるかどうか知りたいです。
4

3 に答える 3

2

本質的にそれがあなたがしていることなので、タグを取り除くだけの方が良いようです。

HTML解析の詳細については、コメント内のdasbinkenlightのリンクも参照してください。

于 2012-06-17T17:29:46.820 に答える
2

正規表現の置換を使用して、すべてのhtmlタグ(<>内のテキスト)を削除できますが、例では。が残り&nbsp;ます。最善のアプローチは、HTMLパーサーです。プログラミング言語によっては、使用できるライブラリがある場合があります。

FakeRainBrigandのアプローチを試すことも、VBScriptに適合させることもできます。.vbsファイルを作成し、次のテストコードを追加します。

Set objIE = CreateObject("internetexplorer.application")

strHTML = "<tr><td class='td_my_custom_text'>Line 1 text. <br>Line 2 text.<br></td></tr><tr><td>&nbsp;</td></tr>"

objIE.navigate("about:blank")
objIE.document.body.innerHTML = strHTML

msgbox objIE.document.body.innerText

ファイルを保存します。開くと、解析されたHTMLを含むメッセージボックスが表示されます。次に、Scripting.FileSystemObjectを使用して、フォルダー内のすべてのファイルを一覧表示し、一度に1つずつ処理できます。これを行う方法のいくつかの例があります-たとえば、フォルダ内の今日の変更されたファイル(その中のサブフォルダを含む)を検出するVBScript、「VBSはフォルダ内のすべてのファイルを一覧表示」をグーグルで検索する場合の他の例。

于 2012-06-17T18:30:20.777 に答える
1

InternetExplorerのCOMインターフェイスを使用できます。AutoHotkey_L言語を使用します。

ex_html =
(
<tr><td class="td_my_custom_text">Line 1 text. 
<br>Line 2 text. Line 2 some more text.
<br>Line 3 text, 
<br>Line 4 text
<br></td></tr><tr><td>&nbsp;</td></tr>
)


pwb := ComObjCreate("InternetExplorer.Application")
pwb.navigate("about:blank")
pwb.document.body.innerHTML := ex_html
text := pwb.document.body.innerText
pwb.quit()


MsgBox % text

空白のページに移動し、HTMLコードを挿入してから、innerTextDOMプロパティを使用してすべての特別なタグをクリーンアップします。

innerHTML行とinnerText行をループで実行すると、すべてのHTML入力をすばやくクリーンアップできます。複数の入力ファイルにアクセスするためのヘルプについては、FileReadLoop(ファイルとフォルダー)などのコマンドを読んでください。

于 2012-06-17T17:53:59.437 に答える