Python爬虫学习==>第九章:正则表达式基…
2018-06-18 02:15:42来源:未知 阅读 ()
学习目的:
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特点字符、及这些特点字符组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正式步骤
Step1:常用匹配模式
Step2:最常规的匹配
import re testString = 'I have 4Learned the python years' print(len(testString)) result = re.match('^I\s\w{4}\s\d\w{7}.*years$',testString) print(result) print(result.group()) #现实匹配结果 print(result.span() #现实匹配区间
运行结果:
32 <_sre.SRE_Match object; span=(0, 32), match='I have 4Learned the python years'> I have 4Learned the python years (0, 32)
范匹配:
.*可以把除了匹配的开头和结尾都匹配
import re testString = 'I have 4Learned the python years' print(len(testString)) result = re.match('^I.*years$',testString) print(result) print(result.group()) print(result.span())
匹配目标:
设置起始端点后,用()来把需要匹配的目标括号起来
import re testString = 'I have Learned the python years' print(len(testString)) result = re.match('^I\s\w{4}\s(\w+)\s.*years$',testString) print(result) print(result.group(1)) print(result.span())
贪婪匹配:
import re testString = 'I have 7777 Learned the python years' print(len(testString)) result = re.match('^I.*(\d+).*years$',testString) print(result) print(result.group(1)) print(result.span())
运行结果:
36 <_sre.SRE_Match object; span=(0, 36), match='I have 7777 Learned the python years'> 7 (0, 36)
非贪婪匹配
import re testString = 'I have 7777 Learned the python years' print(len(testString)) result = re.match('^I.*?(\d+).*years$',testString) print(result) print(result.group(1)) print(result.span())
运行结果:
36 <_sre.SRE_Match object; span=(0, 36), match='I have 7777 Learned the python years'> 7777 (0, 36)
Step3:匹配模式
包含换行符:
import re testString = '''I have 7777 Learned the python years''' print(len(testString)) result = re.match('^I.*(\d+).*years$',testString,re.S) print(result) print(result.group(1)) print(result.span())
转义:
import re content = "i have $5.00" result = re.match('i have \$5\.00',content) print(result.group())
Step4: re.search
功能:扫描整个字符串,返回第一个成功的匹配
import re testString = '''I have 7777 Learned the python years''' print(len(testString)) result = re.search('I.*(\d+).*years$',testString,re.S) print(result) print(result.group(1)) print(result.span())
总结:为了匹配方便,能用search就不用match,因为search方法不用限制匹配字符串的头部必须一致
Step5: re.compile
# -*- coding:utf-8 -*- """ re.compile 将一个正则表达式串编译成正则对象,以便于复用该匹配模式--简言之就是代码复用 按我的理解就是下面例子中的pattern就是过滤条件 """ import re content = "I love python" pattern = re.compile('I.*python',re.S) result = re.match(pattern,content) result1 = pattern.match(content) print(result.group()) print(result1.group())
运行结果:
I love python
I love python
学习总结:
正则表达式的应用需要多实践,在过滤爬取的数据时,应用较多
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash