-1

正規表現を使用して、タイトルのHTMLページをスクレイプしようとしています。これが私が試していることです:

\<title\>\A\Z\</title\>

助言がありますか?

4

1 に答える 1

28
<title>(.*?)</title>

角かっこを.*?使用すると、キャプチャグループを参照できます。正規表現ライブラリには、キャプチャグループで一致するものを返す方法がおそらくあります。インデックスが0のグループは完全一致です。したがって、おそらく最初に出くわす開始ブラケットであるグループインデックス1を選択する必要があります(ここにはブラケットのセットが1つだけあります)。

一部のライブラリでは、次のものが必要です。

.*?<title>(.*?)</title>.*

文字列の完全一致が必要なものもあるためです。

  • \ Aは、文字列コンテナの先頭と一致させるために使用されます
  • \ <は、空白と文字の境界を一致させるために使用されます
  • \>文字と空白の境界に一致します

これは絶対確実ではないことに注意してください。Webページは、次のようなページで正規表現を壊す可能性があります。

<html>
    <script>
      // <title>HAHA YOU GOT THE WRONG TITLE</title>
    </script>
    <title>The Actual title</title>
  </head><body></body>
</html>

タイトルを一致させる前に正規表現をより複雑にすることで、この可能性を回避できます。ただし、それは実際には機能しません。偽のタイトルがHTMLコメント<!-- <title></title> -->またはコメントに含まれている可能性があるため/* javascript */です。

したがって、実際のHTMLパーサーを使用することをお勧めします。あなたはこれらの多くを見つけるためにグーグルを検索することができます。

于 2012-08-19T22:52:17.767 に答える