0

ここにいくつかの情報を取得しようとしていますが、これは私の正規表現です

<tr>
<td>([^<]+)<i><a href="([^<]+)" title="([^<]+)">([^<]+)<\/a><\/i><sup id="([^<]+)" class="([^<]+)"><a href="([^<]+)"><span>[<\/span>1<span>]<\/span><\/a><\/sup><\/td>
<td><a href="([^<]+)" title="([^<]+)">([^<]+)<\/a><\/td>
<td><a href="([^<]+)" title="([^<]+)">([^<]+)<\/a><\/td>
<td>([^<]+)<\/td>
<td>([^<]+)<\/td>
</tr>

ここにサンプルhtmlがあります

<tr>
<td><i><a href="/wiki/3Xtreme" title="3Xtreme">3Xtreme</a></i><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span>[</span>18<span>]</span></a></sup></td>
<td><a href="/wiki/989_Studios" title="989 Studios">989 Studios</a></td>
<td><a href="/wiki/989_Studios" title="989 Studios">989 Studios</a></td>
<td>1999-03-31<sup>NA</sup></td>
<td>NA</td>
</tr>

今のところ、一致を見つけるためのデータを取得したいだけです..これと一致しない理由がわかりますか?

すべての嫌いな人のために....htmlで正規表現を使用する必要があるかどうかについてのあなたのオプションは気にしません..この場合、それはうまく機能します。1 つのページがあり、必要なデータはテーブルにあります。データを取得できたら、それをデータベースに保存し、二度と正規表現を使用する必要はありません..あなたのコメントまたは回答がhtmlで正規表現を使用するオプションに関するものである場合は..投稿しないでください。

4

2 に答える 2

1

...二行目:

<td>([^<]+)<i>

一致することは期待できません:

<td><i>

タグの間に何もないのに、'{1,}' に相当する '+' を挿入したためです。残りの正規表現をチェックしませんでしたが、とにかく機能しません。

編集:
など も修正してください"([^<]+)"(理由がわかるといいのですが)...そして、修正するときに正規表現を編集してください。

編集2:
それはかなりの災害です(申し訳ありませんが、それは真実です:/):すべてのケースで機能しないすべての([^ <] +)ものを単純な(.*?)に置き換えることを検討してください

編集 3:
[ と ] はエスケープする必要があります。(\d は数字をキャッチするのに役立ちます)

于 2013-03-31T20:38:28.293 に答える
1
<span>[<\/span>1<span>]<\/span>

ここには多くの問題があります: 括弧をエスケープする必要があり、明らかに 1 は 18 と一致しません。

于 2013-03-31T20:59:47.867 に答える