0

文字列がhtmlタグの一部でない場合にのみ、文字列を一致させようとしています。

たとえば、文字列「abc」を検索する場合。 <a href="foo.html">abc def</a>一致する必要があります一致 <p> foo bar foo abc foo bar</p>する必要があります

しかし、 <a href="abc.html">foo</a>一致するべきではありません。

助けてくれてありがとう!

4

5 に答える 5

4

HTML は規則的ではなく、つまずくような特殊なケースがたくさんあるので、HTML と一致させるために正規表現を使用するつもりはまったくありません。最も単純なケースを除いて、HTML パーサーを使用します (たとえば PHP 用のパーサー)。

于 2009-09-02T08:48:44.383 に答える
0

一部のCDATAセクションで正規表現が機能しなくなると確信しています。

于 2009-09-02T09:10:19.690 に答える
0

私もブライアンコメントに同意しますが、私はしばしば正規表現を使用して迅速で汚い解析を行います.あなたの場合、私は次のようなものを使用します:

  • データを「シリアライズ」する
s/[\r\n]//
s/<!\[CDATA\[.*?]]>//
s/</\n</
s/>/>\n/
  • 次に、で始まるすべての行を単純にフィルタリングします<
s/^<.*//

残っているのはテキストだけです(そしておそらく多くの空白があります)。ただし、これは正規表現ではなく、検索と置換に関するものです。

于 2009-09-02T13:26:39.517 に答える
0

ブライアンは、とにかく、正規表現を使用したい場合は、それがあなたの入力に合っているという点を持っています:

.*>[^<]*abc[^<]*<.*
于 2009-09-02T08:54:56.790 に答える
0

あなたが探しているのは DOM パーサーです。これにより、すべての HTML が取り除かれ、調べているページのプレーン テキストが提供されます。これを照合することができます。ユースケースが何であるかはわかりませんが、DOM を操作していない、または JavaScript を使用しているとは限りません。

情報を抽出するだけの場合は、The Simple HTML DOM Parserなどを使用してページを解析し、解析されたオブジェクトから取得できるプレーン テキストと照合します。

于 2009-09-02T13:33:12.053 に答える