0

次の文字列があります。

<A href="CarPage.asp?parent=CAR123+++&Color=RED">The Car is Red - Its Fast</a>

そして、私は抽出したい:

  • CAR123
  • 車は赤い - 速い

私がこれまでに持っているものは次のとおりです。

(?<=<A href="CarPage\.asp\?parent=)[A-Za-z0-9]*(\+\+\+&Color=)[A-Za-z0-9]{3}(\">)[A-Za-z0-9\- ]*(?=</a>)

しかし、文字列の境界にない場合に、正と負の先読みと後読みを設定する方法がわかりません。

確かに、それは HTML です...前に聞いたことがあります... 「正規表現で html を解析しないでください...」 これ以上複雑なことは必要ありません。

助けていただければ幸いです。

ありがとう!

4

2 に答える 2

2

それほど複雑なことは必要ありません。おそらくこれでうまくいくでしょう:

/parent=(\w+).*Color=(\w+).*>(.*)</

$1そして、 、$2、 から部品を引き抜き$3ます。.*実際の入力がどの程度変動するかによっては、パーツを少し締める必要があるかもしれません。

たとえば、この Perl のビット:

my $s = '<A href="CarPage.asp?parent=CAR123+++&Color=RED">The Car is Red - Its Fast</a>';
$s =~ /parent=(\w+).*Color=(\w+).*>(.*)</;
print join("\n", $1, $2, $3), "\n";

出力:

CAR123
RED
The Car is Red - Its Fast
于 2011-05-27T06:40:10.430 に答える
1

パーサーを使用することをお勧めしますが、リンクが常にまったく同じ方法でフォーマットされている場合(ID、クラス、追加のパラメーター、異なる順序のパラメーターなどがない場合は、次を試してください。

parent=(\w+?)\+*&Color=(\w+?)">(.*?)<

ムーの提案との違いは、貪欲さです。

于 2011-05-27T06:57:28.880 に答える