0

今、これに数時間苦労しています...

私は次の正規表現を持っています:

(?<=\bdata-video-id=""."">)(.*?)(title=.*?>)

次の入力:

         <div class="cameras">            
            <table class="results">
                <colgroup>
                    <col class="col0">
                    <col class="col1">
                </colgroup>
                <thead>
                    <tr>
                        <th title="Name">
                            Name
                        </th>
                        <th title="Date">
                            Date
                        </th>
                    </tr>
                </thead>
                <tbody>
                    <tr data-video-id="1">
                        <td title="149 - Cam123">
                            149 - Cam123
                        </td>
                        <td title="Feb 18 2013">
                            Feb 18 2013
                        </td>
                    </tr>
                    <tr data-video-id="2">
                        <td title="150 - Cam456">
                            150 - Cam456
                        </td>
                        <td title="Feb 18 2013">
                            Feb 18 2013
                        </td>
                    </tr>                   
                </tbody>
            </table>
        </div>

正規表現はこれを出力します:

<td title="149 - Cam123">
<td title="150 - Cam456">

しかし、私が取得したいのは、すべてのテーブル行の最初のセルのtitle属性の内容です。

149 - Cam123
150 - Cam456

行数は明らかに異なる場合がありますが、列数は固定されています。上記の正規表現を微調整するのを手伝ってください。ありがとう

:解は正規表現でなければなりません。私はコードベースにアクセスできないため、HTMLパーサーやその他の種類のコード介入は不可能です。アプリケーションに接続できる唯一の方法は、別の正規表現を挿入することです。

4

1 に答える 1

0

正規表現でなければならないというOP要件に基づいて、私の提案は、内部タイトル情報にグループラッパーを追加することです。

(?<=\bdata-video-id=""."">).*?title="(.*?)">

それ以外の場合、一般的な解決策は正規表現を使用しないことです。

なぜ正規表現を使用しているのですか?タグが複雑であるため、これに対する一般的な解決策は、HTMLパーサーを使用することです。

これがこのトピックについてのSOです

このブログ投稿でJeffAtwoodが指摘した、XHTMLに正規表現を使用することに関するもう1つのさらに人気のある応答は次のとおりです。

于 2013-02-20T15:58:21.767 に答える