Python网络爬虫与信息提取(三) 正则表达式
来源:互联网 发布:大数据研究方向 编辑:程序博客网 时间:2024/06/04 17:45
正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
正则表达式由字符和操作符构成
正则表达式常用操作符
经典正则表达式
re库的基本使用
re库表示raw string类型来表示正则表达式 r’text’ 例如中国境内邮政编码 可以表示为r’[1-9]\d{5}’
其实就是前面加一个小的的
raw string表示不加转义符的字符串
re库主要功能函数
flags 主要有三个控制标记。re.I 忽略正则表达式大小写
re.M 作用于异或操作符,匹配每一行的开始进行匹配
re.S .操作符进行作用,匹配所有字符
例子
import rematch = re.search(r'[1-9]\d{5}',"BIT 100081")if match: print(match.group(0))#100081list = re.findall(r'[1-9]\d{5}',"BIT 100081 CUT 200345")list #['100081', '200345']pat = re.compile(r'[1-9]\d{5}')rst = pat.search("BIT 100081 CUT 200345") #另一种使用方式,先编译后操作
match对象的常用属性:.string 待匹配的文本 .re匹配时使用的正则表达式 .pos匹配正则表达式文本的开始的位置,.endpos 结束位置
还有四个常用方法 : .group(0) 获得匹配后的字符串 .start()匹配字符串在原始字符串的开始位置 .end()匹配字符串在原始字符串的结束位置 .span()返回(.start(),.end())
match = re.search(r'[1-9]\d{5}',"BIT 100081 CUT 200345")match.string #'BIT 100081 CUT 200345'match.re # re.compile(r'[1-9]\d{5}', re.UNICODE)match.pos # 0match.endpos # 21match.group(0) #'100081' 只返回第一个匹配结果,如果需要所有匹配结果 用finditermatch.start() #4match.end() # 10match.span() #(4, 10)
贪婪匹配和最小匹配
re库默认贪婪匹配,就是返回匹配到的最长的
如果希望最小匹配,如果操作符可以匹配不同长度,在这个操作符后面加一个?就是最小匹配
match = re.search(r'PY.*N','PYANBNCNDN')match.group(0) #'PYANBNCNDN'match = re.search(r'PY.*?N','PYANBNCNDN')match.group(0) #'PYAN'
阅读全文
0 0
- Python网络爬虫与信息提取(三) 正则表达式
- Python网络爬虫与信息提取-Day11-正则表达式的概念和语法
- Python网络爬虫与信息提取-Day12-Re(正则表达式)库入门
- Python网络爬虫与信息提取(三):网络爬虫之实战
- Python网络爬虫与信息提取(三):网络爬虫之实战
- Python网络爬虫与信息提取(一)
- Python网络爬虫与信息提取 网络爬虫之规则
- Python 网络爬虫-正则表达式、BeautifulSoup、lxml三种提取方法
- python爬虫提取信息:正则表达式和xpath
- Python网络爬虫与信息提取(二):网络爬虫之提取
- Python网络爬虫与信息提取(二):网络爬虫之提取
- 【MOOC】Python网络爬虫与信息提取-北京理工大学-part 1
- 【MOOC】Python网络爬虫与信息提取-北京理工大学-part 2
- 【MOOC】Python网络爬虫与信息提取-北京理工大学-part 3
- 【MOOC】Python网络爬虫与信息提取-北京理工大学-part 4
- j记录学习--python网络爬虫与信息提取
- Python网络爬虫与信息提取(中国大学mooc)
- [mooc]python网络爬虫与信息提取(实例一)
- Haskll Lesson:Huffman编码实现文本压缩
- 时间堆整理笔记
- form表单的onsubmit() return问题
- C语言实验——数日子
- 不使用(a+b)/2这种方式,求两个数的平均值。
- Python网络爬虫与信息提取(三) 正则表达式
- Android函数响应式编程——必学的RxJava辅助操作符delay、Do、subscribeOn、observeOn、timeout
- Mac环境 Java连接mysql
- lintcode 3. 统计数字 纯数学解法
- 题解报告——约瑟夫环(链表)
- lintcode 168. 吹气球 动态规划
- Jackson之jackson-annotations
- Javaweb--Spring整合Hibernate-spring管理hibernate配置
- C++ vector容器类型及初始化方法