正则表达式—HTML中的匹配
从HTML中文本中提取Email地址和http URL,是在做爬虫时候的经常用到的技术,虽然变成语言本身可以帮助我们找到他们,但是用正则表达式来匹配也是很有用和具有实际意义的方法。
一、匹配HTML Tag
HTML不是有特别严格编程要求的,因此在匹配时会遇到很多特殊情况需要特殊处理,这里仅仅给出一般化的解决方法:
【文本】ddd< input name=dir value=”>”>ddd
【解析】显然,文本中非转义字符>与闭尖括号的提取是难点,不能向往常一样[^>]来提取。
【表达式】 <(“[^”]*”|’[^’]*’|[^’”>])*>
“[^”]*”表示提取双括号的内容
‘[^’]*’表示提取单括号的内容
[^’”>]表示提取其他内容
【注意】也许你用<.*>也能匹配上述文本,但是实际情况时当你遇到的是ddd< input name=dir value=”>”>ddd< / input>时候,它将匹配全部。
二、匹配Link
【文本】< a href=”http://www.csdn.net”>my blog < / a >
【解析】要获取双引号或单引号中间的地址,但不是所有双引号的内容都是Link,“href=”很重要
【表达式】href\s*=\s*(“[^”]*”|”[^’]*”|[^”’>]+)
三、真实世界中提取URL
【文本】read the comments at http://www.baidu.com/ask_tik/index.html you can find …
【解析】URL类型包括:māilto, http, https, ftp
但是有时候文本中并不包含上诉开头,而是直接以www.baidu.com出现。
【表达式1】
(ftp|https?)://[-\w]+(.\w[-\w]*)+|
(?:[a-z0-9]( ? :[-a-z0-9][a-z0-9])?\.)+
(?:com\b
|edu\b
|gov\b
|org\b
|net\b
|[a-z][a-z]\b)
(
/
[^.!,?:”’<>()[]{}\s\x7F-\xFF]*
(?:[.!,?]+[^.!.?;”’<>()[]{}\s\x7F-\xFF])*
)?
【不包含特殊符号(?!=)的URL的表达式】https?://\w+(.\w+)+(\/\w+)*(.\w+)*
【包含特殊符号(?!=)的URL简化表达式】
https?://\w+(.\w*)+(?:\.com)*
(\/[^”’<>()[]{}\s\x7F-\xFF]*)*
正则表达式—HTML中的匹配相关推荐
- 正则表达式 String中正则匹配的方法
目录 基础 常用的一些 特殊字符 非打印字符 元字符 表达式 量词 或者 创建正则表达式 实例方法 字符串中的正则方法 字符串的 match()方法 字符串的 search() 字符串的 split( ...
- java正则表达式所有字符串_java正则表达式如何获取字符串中所有匹配内容
java正则表达式如何获取字符串中所有匹配内容以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java正则表达式如何获取 ...
- java中正则匹配字符串长度_Java中使用正则表达式校验字符串
Java中使用正则表达式校验字符串 正则表达式是某一位伟大的数学家发明的,现在已经形成了一个ISO标准,这个标准和编程语言没有关系.至于具体谁发明的,怎么发明的,我也忘记了:). 正则表达式简单理解就 ...
- python 字符匹配_python 中如何匹配字符串
python 中如何匹配字符串? 1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.import re line="th ...
- java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍
java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...
- python里面的正则表达式_Python中的正则表达式
以下内容转自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Pyth ...
- 正则表达式之 NFA 引擎匹配原理详解
文章目录 一.为什么要了解引擎匹配原理 二.正则表达式引擎 三.预备知识 (一)字符串组成 (二)占有字符和零宽度 (三)控制权和传动 四.正则表达式简单匹本过程 (一)基础匹配过程 (二)含有匹配优 ...
- mysql中使用正则表达式,mysql中使用正则表达式查询
基本形式 属性名 regexp '匹配方式' 正则表达式的模式字符 ^ 匹配字符开始的部分 eg1: 从info表name字段中查询以L开头的记录 select * from info where n ...
- nginx配置中location匹配规则详解
女主宣言 nginx作为一款性能优异的反向代理服务器,可以用于静态代理.负载均衡.限流等多种场景.那么,要灵活的使用nginx,必须清楚nginx配置文件的使用.本文作者对nginx的http块中的l ...
最新文章
- 7/15 我的第一篇博客-写给自己
- 字节跳动高频算法题TOP100
- Coursera课程Python for everyone:Quiz: Reading Web Data From Python
- SQL LEFT JOIN与IN使用案例说明
- 无服务器:不费吹灰之力!
- php字符串连接符、三元运算符
- ROS入门-2.Linux系统基础操作
- shell学习之awk或gawk
- ggbiplot设置分组_prcomp和ggbiplot:无效的’rot’值
- radio select的 option使用
- 软件工程作业团队作业No.5
- JJavaBean中使用JDBC方式进行事务处理
- matlab批量储存变量_Matlab批量赋值
- php 变量加的作用是什么,php变量的定义和作用是什么 - php完全自学手册 - php中文网手册...
- java seek_java中seek()的用法,seek和seekfor有什么区别
- idea 使用markdown总结
- 清除IE浏览器SSL缓存
- mantis问题状态
- Linux用户口令安全策略,Linux 控制用户口令安全策略
- 各地级市-进出口与贸易差额(2000-2020)