0

抽出する必要がある VALUE の後に KEY が配置されている場合、HTML 文字列を正規表現で解析する必要があります。

元の文字列の例:

<TR><TD>VAL1</TD><TD>KEY1</TD></TR><TR><TD>VAL2</TD><TD>KEY2</TD></TR>

VAL2 を抽出しようとすると:

<TD>(.*?)</TD><TD>KEY2</TD>

私は実際に得る

VAL1KEY1VAL2

キーが一定で、値が変化していると仮定して、この問題を解決するにはどうすればよいですか?

前もって感謝します、マイケル

4

2 に答える 2

5

使用する

<TD>([^<]*)</TD><TD>KEY2</TD>

代わりは。あなたの怠惰な量指定子、最短の一致を保証しますが、最初に一致する位置からです。この場合、最初の<TD>. 上記の解決策は、値に表示できる文字を制限することで問題を回避するため、複数のタグにまたがることはありません。

于 2012-06-06T12:33:07.757 に答える
1

何の言語を使っているかわかりませんが、PHPなら正規表現で解析するよりもDOMを使ったほうがいいと思います。

これを行う1つの方法は次のとおりです。

<?php

$html="<TR><TD>VAL1</TD><TD>KEY1</TD></TR><TR><TD>VAL2</TD><TD>KEY2</TD></TR>";

$doc = new DOMDocument();
$doc->loadHTML($html);

print_r($doc->getElementById(1)->tagName);

$output=array();
$n=0;
while ($val = $doc->getElementsByTagName('td')->item($n++)) {
  $key = $doc->getElementsByTagName('td')->item($n++);
  $output[$key->textContent]=$val->textContent;
}

print_r($output);

そして、これが私がそれを実行したときに表示されるものです。

Array
(
    [VAL1] => KEY1
    [VAL2] => KEY2
)
于 2012-06-06T12:56:08.497 に答える