




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python爬虫程序设计KC181.8正则表达式正则表达式是用来匹配与查找字符串的,从网上爬取数据自然或多或少会用到正则表达式。Python的正则表达式要先引入re模块,正则表达式以r引导,例如:importrereg=r"\d+"m=re.search(reg,"abc123cd")print(m)其中r"\d+"正则表达式表示匹配连续的多个数值,search是re中的函数,从"abc123cd"字符串中搜索连续的数值,得到"123",返回一个匹配对象,因此程序的结果如下:<_sre.SRE_Matchobject;span=(3,6),match='123'>从结果看出,在指定的字符串中找到了连续的数值,它们是"123",span(3,6)表示开始位置是3,结束位置是6,这正好是"123"在"abc123cd"中的位置。Python中关于正则表达式的规则比较多,下面将介绍主要的内容,详细内容读者可以参考相关资料。1、字符"\d"匹配0-9之间的一个数值。例如:importrereg=r"\d"m=re.search(reg,"abc123cd")print(m)结果找到了第一个数值"1":<_sre.SRE_Matchobject;span=(3,4),match='1'>2、字符"+"重复前面一个匹配字符一次或者多次。例如:importrereg=r"b\d+"m=re.search(reg,"a12b123c")print(m)结果找到了"b123":<_sre.SRE_Matchobject;span=(3,7),match='b123'>注意:r"b\d+"第一个字符要匹配"b",后面是连续的多个数字,因此是"b123",不是"a12"。3、字符"*"重复前面一个匹配字符零次或者多次。"*"与"+"类似,但有区别,例如:importrereg=r"ab+"m=re.search(reg,"acabc")print(m)reg=r"ab*"m=re.search(reg,"acabc")print(m)结果:<_sre.SRE_Matchobject;span=(2,4),match='ab'><_sre.SRE_Matchobject;span=(0,1),match='a'>4、字符"?"重复前面一个匹配字符零次或者一次。例如:importrereg=r"ab?"m=re.search(reg,"abbcabc")print(m)结果:<_sre.SRE_Matchobject;span=(0,2),match='ab'>匹配结果是"ab",其中b重复一次。5、字符"."代表任何一个字符,但是没有特别声明时不代表字符"\n"。例如:importres="xaxby"m=re.search(r"a.b",s)print(m)结果"."代表了字符"x"<_sre.SRE_Matchobject;span=(1,4),match='axb'>6、"|"代表把左右分成两个部分。例如:importres="xaabababy"m=re.search(r"ab|ba",s)print(m)结果匹配"ab"或者"ba"都可以:<_sre.SRE_Matchobject;span=(2,4),match='ab'>7、特殊字符使用反斜线"\"引导,例如"\r"、"\n"、"\t"、"\\"分别表示回车、换行、制表符号与反斜线自己本身。例如:importrereg=r"a\nb?"m=re.search(reg,"ca\nbcabc")print(m)结果匹配"a\n\b":<_sre.SRE_Matchobject;span=(1,4),match='a\nb'>8、字符"\b"表示单词结尾,单词结尾包括各种空白字符或者字符串结尾。例如:importrereg=r"car\b"m=re.search(reg,"Thecarisblack")print(m)结果匹配"car",因为"car"后面是以个空格:<_sre.SRE_Matchobject;span=(4,7),match='car'>9、"[]"中的字符是任选择一个,如果字符是ASCII码中连续的一组,那么可以使用"-"符号连接,例如[0-9]表示0-9的其中一个数字,[A-Z]表示A-Z的其中一个大写字符,[0-9A-Z]表示0-9的其中一个数字或者是A-Z的其中一个大写字符。例如:importrereg=r"x[0-9]y"m=re.search(reg,"xyx2y")print(m)结果匹配"x2y":<_sre.SRE_Matchobject;span=(2,5),match='x2y'>10、"^"出现在[]的第一个字符位置,就代表取反,例如[^ab0-9]表示不是a、b,也不是0-9的数字。例如:importrereg=r"x[^ab0-9]y"m=re.search(reg,"xayx2yxcy")print(m)结果匹配"xcy":<_sre.SRE_Matchobject;span=(6,9),match='xcy'>
11、"\s"匹配任何空白字符,等价"[\r\n\x20\t\f\v]"。例如:importres="1aba\tbxy"m=re.search(r"a\sb",s)print(m)结果匹配"ab":<_sre.SRE_Matchobject;span=(1,4),match='ab'>
12、"\w"匹配包括下划线子内的单词字符,等价于"[a-zA-Z0-9_]"。例如:importrereg=r"\w+"m=re.search(reg,"Pythoniseasy")print(m)结果匹配"Python":<_sre.SRE_Matchobject;span=(0,6),match='Python'>13、"^"匹配字符串的开头位置。例如:importrereg=r"^ab"m=re.search(reg,"cabcab")print(m)结果:None没有匹配到任何字符,因为"cabcab"中虽然有"ab",但不是"ab"开头。14、"$"字符匹配字符串的结尾位置。例如:importrereg=r"ab$"m=re.search(reg,"abcab")print(m)匹配结果是最后一个"ab",而不是第一个"ab":<_sre.SRE_Matchobject;span=(3,5),match='ab'>15、使用括号(...)可以把(...)看成一个整体,经常与"+"、"*"、"?"的连续使用,对(...)部分进行重复。例如:importrereg=r"(ab)+"m=re.search(reg,"ababcab")print(m)结果匹配"abab","+"对"ab"进行了重复:<_sre.SRE_Matchobject;span=(0,4),match='abab'>例:匹配找出英文句子中所有单词我们可以使用正则表达式r"[A-Za-z]+\b"匹配单词,它表示匹配由大小写字母组成的连续多个字符,一般是一个单词,之后"\b"表示单词结尾。importres="Iamtestingsearchfunction"reg=r"[A-Za-z]+\b"m=re.search(reg,s)whilem!=None:start=m.start()end=m.end()print(s[start:en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年团建活动方案
- 2025年教学副校长工作方案
- 保险销售方案2025年个人范例
- 安徽省巢湖第四中学2024-2025学年初三下学期第一次验收考试-化学试题试卷含解析
- 贵州理工学院《中外书籍形态设计》2023-2024学年第二学期期末试卷
- 毕节医学高等专科学校《西班牙语语音训练营》2023-2024学年第一学期期末试卷
- 辽宁省鞍山市岫岩满族自治县2025年三年级数学第二学期期末检测模拟试题含解析
- 2025年北京市房山区名校全国初三大联考物理试题含解析
- 北京海淀区2025届初三下学期期中考试英语试题理试题(实验班)含答案
- 大连东软信息学院《化工文献检索与阅读》2023-2024学年第二学期期末试卷
- 大型风电场智能运维方案
- LMX2594实现跳频的编程时序分析
- 巨幼细胞贫血诊疗规范2022版
- 领导力与企业文化、企业管理之辩证关系-以泰州港务集团为案例的研究的开题报告
- 网络协议逆向工程技术
- 沥青路面损坏调查表(带公式自动计算)
- 影视鉴赏之《当幸福来敲门》
- 校园超市投标书1
- 施工企业数字化转型实施方案
- 审计资料交接清单
- 介绍辽宁丹东的PPT模板
评论
0/150
提交评论