抓取网页时,常用到的正则语法。(持续更新,本次2015-11-11)
来源:互联网 发布:数据挖掘系统的任务 编辑:程序博客网 时间:2024/05/20 07:51
首先,祝大家光棍节快乐!
没想到我会持续的更新正则的用法,在文章的末尾,会普及一个正则表达式工具。
一.先说几句。
文章的抓取算是比较常见的,经常会有需求去抓别人的网站,来提取新闻,或者其他等信息。
这两天我做一个项目就是这样,可能会抓取很多网站,但是不论什么网站,正则合适就可以了,不是吗?
二.常用句子的解释以及科普
1.抓标签碰到格式不一的句子怎么办?
例子:
<a class="link row" target="_blank" ..... href="/post/quanqiushichanggailanguzhizhishulingzhangposiliaozhishulingdie" .... > ....</a>
要求:抓住href(/post/quanqiushichanggailanguzhizhishulingzhangposiliaozhishulingdie)
正则:
<a[\S\s]*?href="(?<url>[\S\s]*?)"[\S\s]*?>[\S\s]*?</a>
运行的结果不用质疑,已经是抓到了。 但是这个句子中有两个奇怪的语法:
- [\S\s]*?
- (?<url>[\S\s]*?)
第一句,可以这么理解, 忽略中间任何字符,直道后面能够匹配为止。
第二句,就是一个正则的group,格式是:(?<名字>语句)
第二句就不用说了,直接说第一句吧 [\S\s]*?
\S
匹配任意一个不是空白符的字符
\s
匹配任意空白符的字符
*
重复0次或多次
当他们连用起来就是可以匹配任意1个字符
当开启贪婪模式,也就是*,的时候,代表可以无限匹配。
那么,匹配总要有个结点吧?所以用?来结束
*?的意思就是匹配最短,用最少的匹配。 比如 :a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)
所以这个句子的情景是:
A:<a asdfsd></a>
B:<a></a>
两者都可匹配到,如果想单单匹配第一句的话,那么使用语句:<a[\S\s]+?></a>
+
重复一次或多次
区别就在+这里,*是可重复0次,?是必须重复1次
证据:
OK,第一点先到这里,以后会持续更新的。
三.再说几句
上面我第一个工具是:正则测试工具
其他工具是:正则表达式,终极使用!3个工具,搞定一切
0 0
- 抓取网页时,常用到的正则语法。(持续更新,本次2015-11-11)
- 常用正则(持续更新)
- 用于抓取网页内容的常用正则
- 常用正则表达式(持续更新)
- 常用正则表达式(持续更新...)
- 常用到的函数(持续更新……)
- JS 正则表达式常用的判断,持续更新
- [总结]常用正则表达式(持续更新中……)
- 常用正则表达式——持续更新
- 常用正则表达式——持续更新
- 常用正则表达式,持续更新中。。。
- 常用的bash命令(持续更新)
- eclipase 的常用设置(持续更新)
- 常用的shell命令(持续更新)
- Golang语法的踩坑总结(持续更新中)
- php 正则抓取网页的table数据
- 常用网址(持续更新)
- 常见正则表达式的匹配(包括汉字-持续更新)
- 设备检测,手机建站框架
- java进阶-创建和销毁对象3
- 栈应用2:走迷宫
- 配置JQuery与其它库的兼容性
- 登录RAC One Node
- 抓取网页时,常用到的正则语法。(持续更新,本次2015-11-11)
- zookeeper简单配置使用
- 自定义控件(11)---Canvas的平移、旋转、缩放、错切、Matrix直接变换Canvas
- 移动硬盘“脱机”(签名冲突)的硬盘如何正常使用
- Java word文件创建
- int 和integer的误用导致 listview的不刷新
- Lua中强大的元方法__index详解
- 双击返回键退出应用
- Calculation method running time