1

html要素を2つのセクションに分割するためのreg式を見つけることに固執しています。1つ目は価格で、2つ目はダウンロード数です。これが私のHTMLで、これが私が使ってみたreg式です。スクレーパープログラムを使用しているため、java-scriptまたはjQueryを使用できません。

HTML:

<h2>$850 / 3Downlaods - Software Name</h2>

再式は以前にマーカーを使用しました:

/$\/\s*/

再式はマーカーを使用しました:

/\/\

これは850のみを返す必要があります。ドル記号はありません。ダウンロード数を開始および終了する方法に固執しています。ダウンロード数を取得するには、正規表現の前と後の別のセットが必要です。「ダウンロード」という単語も除外します。

私が使用しているプログラムは、OutWitHubScraperです。ドキュメントへのリンク

4

2 に答える 2

1

で区切られた 2 つのキャプチャ グループ内にネストされたタグが他にない場合<h2>(説明がより複雑です)、次のようにします。()/

/<h2>\s*\$(\d+)\s*\/\s*(\d+)\s*Downloads.+?<\/h2>/

<h2>これは、 、オプションの空白\s*$、キャプチャする桁数、 の(\d+)両側のオプションの空白、/キャプチャする数字のグループ、 の前のオプションの空白Downloads、 終了までの任意の文字 (貪欲ではない)として分解され</h2>ます。

価格部分にグループが含まれている場合は,.(\d+)グループを置き換えることができます([0-9.,]+)(または、必要に応じて開始しないように、さらに具体的にし,ます)。

/<h2>\s*\$([0-9,.]+)\s*\/\s*(\d+)\s*Downloads.+?<\/h2>/

HTML を解析するために正規表現を使用することに関する通常の警告がここに適用されます。これは、HTML 入力がかなり予測可能で、 内にタグがネストされていない場合にのみ正常に機能します<h2>

于 2012-08-01T20:20:38.880 に答える
1

これを試してください:(?:.*\$)(\d+(?:\.\d+)?).*(\d+)(?:\s*Downloads.*)

何が起こっているかは次のとおりです。

(?:.*\$)- ドル記号の後に見つかった最初の数字まで、タグの先頭をキャプチャして破棄します

(\d+(?:\.\d+)?)- ドル金額 (セントを含む) を取得する

.*- 両方の数字の間のがらくた

(\d+)- ダウンロード数

(?:\s*Downloads.*)- タグの残りの部分

それが役立つことを願っています!

于 2012-08-01T20:29:37.940 に答える