HTML标题的正则表达式?

tkb*_*kbx -3 html regex

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

\<title\>\A\Z\</title\>
Run Code Online (Sandbox Code Playgroud)

有什么建议?

ron*_*chn 21

<title>(.*?)</title>
Run Code Online (Sandbox Code Playgroud)

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

在某些库中,您需要:

.*?<title>(.*?)</title>.*
Run Code Online (Sandbox Code Playgroud)

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

  • \ A用于匹配字符串容器的开头
  • \ <用于匹配空格和字符之间的边界
  • \>匹配字符和空格之间的边界

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

<html>
    <script>
      // <title>HAHA YOU GOT THE WRONG TITLE</title>
    </script>
    <title>The Actual title</title>
  </head><body></body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以通过在匹配标题之前使正则表达式更复杂来避免这种可能性.但是,这并没有真正起作用.因为假标题可能在HTML评论<!-- <title></title> -->/* javascript */评论中.

因此,最好使用实际的HTML解析器.您可以搜索谷歌以找到其中许多.

  • 关于使用正则表达式解析html的破坏性的警告+1 (2认同)