1

テーブル セル内の識別可能なテキストを含むネストされたテーブルに一致する正規表現はどれですか? 試してみましたが、例の両方のテーブルの最初と最後を取得せずに、必要な特定のテーブルを抽出するための正規表現を思いつくことができませんでした。ここから始めましょう: " <table>.*?</table>"

<table>
    <tr>
        <td>
            <table>
                <tr><td>Code1</td></tr>
                <tr><td>some data</td></tr>
                <tr><td>etc ...</td></tr>
            </table>
        </td>
    </tr>
    <tr>
        <td>
            <table>
                <tr><td>Code2</td></tr>
                <tr><td>some data</td></tr>
                <tr><td>etc ...</td></tr>
            </table>
        </td>
    </tr>
</table>

「Code2」を含むテーブルを抽出したいとします。どの正規表現が具体的に一致し、そのテーブルのみに一致しますか?

4

3 に答える 3

6

HTML は規則的ではないので、正規表現を使用するつもりはありません。HTML パーサーを使用する方がよいでしょう。使用している言語やプラットフォームに関係なく、利用できるものがあります。

于 2009-10-01T17:22:57.510 に答える
4

次の正規表現は、テーブルを見つけます。

(?ms)<table>((?!<table>).)*<td>Code2</td>.*?</table>

「複数行の一致」と「ドットは改行にも(?ms)一致」をオンにします。次に、マッチ内でテーブルの 2 回目の開始がないことを確認するために、否定的な先読みがあります。(m)(s)(?!)

于 2009-10-01T19:53:35.787 に答える
1

正規表現を使用しないでください。HTML パーサーを使用してください。

ただし、Perl の場合 (ネストされたテーブルがない場合):

$xml =~ /<table>.*<td>Code2<\/td>.*<\/table>/s;
于 2009-10-01T17:22:32.407 に答える