从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中的匹配相关推荐

  1. 正则表达式 String中正则匹配的方法

    目录 基础 常用的一些 特殊字符 非打印字符 元字符 表达式 量词 或者 创建正则表达式 实例方法 字符串中的正则方法 字符串的 match()方法 字符串的 search() 字符串的 split( ...

  2. java正则表达式所有字符串_java正则表达式如何获取字符串中所有匹配内容

    java正则表达式如何获取字符串中所有匹配内容以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java正则表达式如何获取 ...

  3. java中正则匹配字符串长度_Java中使用正则表达式校验字符串

    Java中使用正则表达式校验字符串 正则表达式是某一位伟大的数学家发明的,现在已经形成了一个ISO标准,这个标准和编程语言没有关系.至于具体谁发明的,怎么发明的,我也忘记了:). 正则表达式简单理解就 ...

  4. python 字符匹配_python 中如何匹配字符串

    python 中如何匹配字符串? 1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.import re line="th ...

  5. java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍

    java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...

  6. python里面的正则表达式_Python中的正则表达式

    以下内容转自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Pyth ...

  7. 正则表达式之 NFA 引擎匹配原理详解

    文章目录 一.为什么要了解引擎匹配原理 二.正则表达式引擎 三.预备知识 (一)字符串组成 (二)占有字符和零宽度 (三)控制权和传动 四.正则表达式简单匹本过程 (一)基础匹配过程 (二)含有匹配优 ...

  8. mysql中使用正则表达式,mysql中使用正则表达式查询

    基本形式 属性名 regexp '匹配方式' 正则表达式的模式字符 ^ 匹配字符开始的部分 eg1: 从info表name字段中查询以L开头的记录 select * from info where n ...

  9. nginx配置中location匹配规则详解

    女主宣言 nginx作为一款性能优异的反向代理服务器,可以用于静态代理.负载均衡.限流等多种场景.那么,要灵活的使用nginx,必须清楚nginx配置文件的使用.本文作者对nginx的http块中的l ...

最新文章

  1. 7/15 我的第一篇博客-写给自己
  2. 字节跳动高频算法题TOP100
  3. Coursera课程Python for everyone:Quiz: Reading Web Data From Python
  4. SQL LEFT JOIN与IN使用案例说明
  5. 无服务器:不费吹灰之力!
  6. php字符串连接符、三元运算符
  7. ROS入门-2.Linux系统基础操作
  8. shell学习之awk或gawk
  9. ggbiplot设置分组_prcomp和ggbiplot:无效的’rot’值
  10. radio select的 option使用
  11. 软件工程作业团队作业No.5
  12. JJavaBean中使用JDBC方式进行事务处理
  13. matlab批量储存变量_Matlab批量赋值
  14. php 变量加的作用是什么,php变量的定义和作用是什么 - php完全自学手册 - php中文网手册...
  15. java seek_java中seek()的用法,seek和seekfor有什么区别
  16. idea 使用markdown总结
  17. 清除IE浏览器SSL缓存
  18. mantis问题状态
  19. Linux用户口令安全策略,Linux 控制用户口令安全策略
  20. 各地级市-进出口与贸易差额(2000-2020)

热门文章

  1. Linux内核总线系统 —— 通用总线和平台设备
  2. Spine在游戏中的使用
  3. 超强跑得快机器人智能算法深度研究与设计
  4. ImageJ 用户手册——第三部分(ImageJ扩展)
  5. CodeChef Squirrel and chestnut 题解
  6. 泰课在线 秘密行动课程
  7. LoRa,物联网技术中的一骑绝尘
  8. 两个空间(N维欧氏空间、Lebesgue空间)的Holder不等式
  9. 鞍点计算 C语言 SDUT
  10. C/C++字符串操作之head头指针和end尾指针相向而行demo