使用正则表达式匹配HTML 下各种<title>标签

散装海盗 发布于 2012/03/29 18:27
阅读 9K+
收藏 0

需要比配的文本有两种形式

<title>标题</title>

<title>
标题
</title>

我自己写的正则表达式是  "<title>.*?</title>" (没有双引号)  只能匹配第一种,,但是不能匹配第二种,,有没有好的正则表达式匹配类似第二种这样换行的标签

 

加载中
0
leo108
leo108

试试这个

<title>[\s\S]*?</title>

散装海盗
散装海盗
@leo108 : 多谢
leo108
leo108
@散装海盗 : 不过貌似在这个情况下没有太大作用,因为页面里面一般只有一个title标签
leo108
leo108
@散装海盗 : 正则的贪婪与懒惰……自己查
散装海盗
散装海盗
能不能具体讲解下这个里面为什么要加上一个“?”呢,,,,使用“*”不就是可以匹配任意字符了么?
leo108
leo108
@散装海盗 : 可以使用就采纳为答案呗……
下一页
0
大大
大大

php版的 /<title>.*?</title>/m

匹配多行

散装海盗
散装海盗
我写的是这个样子的<title>[\r\n]*.*?[\r\n]*</title>只能匹配一行的情况,,如果题目中油换行也是无能为力
0
用户名已存在
用户名已存在
>>> s = '''<title>Title
</title><h1>H1
</h1>'''
>>> pattern = '\s*<(?P<tag>[a-zA-Z]\w*)>\s*(.*?)\s*</(?P=tag)>\s*'
>>> re.findall(pattern, s, re.S)
[('title', 'Title'), ('h1', 'H1')]
#Python 版本,记得设置S选项,S dot match all(包括换行)

散装海盗
散装海盗
没怎么用过python,有空看看
0
晴风晓月
晴风晓月

三楼的有点复杂,二楼应该是正确的。

关键是需要匹配所有可能出现在标签中的不可见字符。

0
voov
voov
//没测试过
$pattern = '/<title>([\S\s]*?)<\/title>/';

voov
voov
@散装海盗 : -_-! 多谢提醒,粗心了...
散装海盗
散装海盗
这个应该不正确吧,,总觉得应该是[\s\S]*
0
散装海盗
散装海盗

引用来自“leo108”的答案

试试这个

<title>[\s\S]*?</title>

这个十分正确
返回顶部
顶部