1

html の解析に Regex を使用しないように言われる前に、私はこれを認識していますが、私の会社は Iconico Data Extractor を使用して Web サイトからデータを抽出しており、カスタム スクリプトを作成できますが、javascript の正規表現でなければなりません。 、したがって、目標を達成するために正規表現を使用することに固執しています。

必要なのは、次の例の html を取得して各行を抽出することです

  <b>Item 1</b> Text <br>
  <b>Item 2</b> Text <br>
  <b>Item 3</b> Text <br>
<p><font color="#000000" face="Arial, Helvetica, sans-serif"><b>Item 4:</b></font></p>
<p><font color="#000000" face="Arial, Helvetica, sans-serif">Detailed Description</font></p>

私が必要としているのは、各項目を式に分解して、HTML での表示方法とまったく同じように、タグを含むすべての行を取得することです。私はアイテム4を取得しようとし/<b>*details(.|\s)*?\/a>/giましたが、アイテム1〜3を取得する方法がわかりません。必要なのは、〜からの行
/<b>*Item 1(.|\s)*?\br>/giだけで機能せず、何時間も遊んだ後、それ以上ではありません前方。可能であれば、フォントタグも取り除く必要があります。</b>途中でクロージングがあるのでややこしいと思います。

式の設定方法について誰かアドバイスをいただけますか。一般的なコンセンサスが正規表現にノーであることはすでに知っているので、そのルートをもう一度たどる必要はありません:)

これは私にとってまったく新しいことなので、私が何をしようとしているのかを説明していただければ幸いです。

前もって感謝します

4

2 に答える 2

1

正常に機能する前に、正規表現を使用してhtmlを解析しました。以下のようなものを使用しました。ご覧のとおり、「.*?」がたくさんあります。これは、任意の文字に非貪欲に一致することを意味します。非常に便利。

どの言語を使用していますか? 改行の解析を許可するオプションを設定する必要がある場合があります。そうしないと、各行が個別の入力として扱われる可能性があります。

Python で re.DOTALL オプションを追加します。PHP には、使用する特別なスラッシュ タグがあります。

<b>(.*?)<br>.*?<b>(.*?)<br><b>(.*?)<br><p.*?sans-serif"><b>(.*?)</p>.*?serif">(.*?)</p>
于 2013-05-15T13:41:05.447 に答える
0

これをデータ エクストラクタで使用する目的で、2 つのキーワード間でデータを取得する方法について調査しましたが、(Item 1:.*?<br>)/gi見事に機能しました。

残念ながら、今後タグを剥がす必要があると言われたので、頭を悩ませる必要があります。ヘルプが必要な場合は、新しい質問を投稿します。

返信して助けようとしてくれてありがとう

于 2013-05-17T03:53:50.457 に答える