HTML标题的正则表达式?

时间:2012-08-19 22:49:16

标签: html regex

我正在尝试使用正则表达式为其标题抓取HTML页面。这是我正在尝试的:

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

有什么建议吗?

1 个答案:

答案 0 :(得分:20)

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

.*?周围的括号可让您引用捕获组。您的正则表达式库可能有一种方法可以返回捕获组中匹配的内容。索引为0的组是整场比赛。所以你应该选择组索引1,这是它遇到的第一个起始括号(这里只有一组括号)。

在某些图书馆,您需要:

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

因为有些需要完全匹配字符串。

  • \ A用于匹配字符串容器的开头
  • \&LT;用于匹配空格和字符之间的边界
  • \&GT;匹配字符和空格之间的边界

请注意,这不是万无一失的。网页可以通过以下页面破坏您的正则表达式:

<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解析器。您可以搜索谷歌以找到其中许多。