0

href 属性に「goto」を含むすべてのアンカー タグをパターンに一致させたいと考えています。php を使用しています。次のようなリンクを一致させたい:

<a  href='http://www.mysite.com/goto/profile'>links </a>

私は次のような正規表現を書きました:

<a.*(href).*(goto).*<\/a>

上記のようなすべてのリンクで機能しています。ただし、アンカー タグに改行がある場合は一致しません。例えば:

 <a  href='http://www.mysite.com/goto/profile'>
links </a>

改行のため一致しません。改行の有無にかかわらずリンクを一致させるには、正規表現が必要です。

4

4 に答える 4

1

「すべてドット」修飾子を探しています/s

マニュアルから:

/s (PCRE_DOTALL)
この修飾子が設定されている場合、パターン内のドット メタ文字は、改行を含むすべての文字に一致します。それがない場合、改行は除外されます。この修飾子は、Perl の /s 修飾子と同等です。[^a] などの否定的なクラスは、この修飾子の設定に関係なく、常に改行文字と一致します。

したがって、はすべての行に一致しますが、/.*/行ごとに新しい一致を作成します。/.*/s

デモ

デモ (DOTALL なし)

于 2013-11-04T12:22:25.343 に答える
1

次の正規表現を使用できます。

<a.*(href).*(goto).*([\n]*.*)*<\/a> 

HTML を解析するには、正規表現ではなく HTML パーサーを使用することをお勧めします。言語に応じて、さまざまな html パーサーが利用可能です。例: python では、beautifulsoup があります。

于 2013-11-04T12:30:49.533 に答える
0

<a(.|\n)*(href).*(goto)(.|\n)*<\/a>複数行を許可するために使用します。

于 2013-11-04T12:19:20.097 に答える
0

あなたが説明したように、アンカータグにのみ複数行が必要な場合は、次のようにします。

<a.*(href).*(goto).*(>)(.|\n)*<\/a>

PHP 用のスマート テスト ツールは、PHP LIVE REGEX TESTERにあります。

于 2013-11-04T12:32:27.463 に答える