通过requests库,我们可以很方便的获取网页的源代码。但是如果我们想要更精细地提取我们想要的内容,我们就需要对内容进行分析。这时候,我们可以使用一个非常强大的工具来帮助我们——正则表达式正则表达式:通过指定一些特殊字符或字符组合来过滤字符串,提取或检索目标内容。正则匹配规则如下图所示,来源:CSDN在Python中,re模块具有正则表达式的所有功能。下面介绍Re中常用的几种方法。1、re.match从字符串的起始位置开始匹配。如果起始位置匹配成功,则返回对应的字符。如果不是起始位置,则返回None。语法如下:defmatch(pattern,string,flags=0):pattern:匹配的正则表达式string:匹配的字符串flags:用于控制正则匹配方式(如下表)修饰符说明re。I使匹配不区分大小写re.L执行区域感知匹配re.M多行匹配,影响^和$re.Smakes。matchallcharactersincludingnewlinesre.U根据Unicode字符集解析字符。此标志影响w、W、b、B.re.X此标志允许您通过提供更灵活的格式来编写更容易理解的正则表达式。匹配后会返回一个对象,可以通过group(num)或groups()获取对应的字符串importretext='HelloWorld,HiPython'#matchHellom1=re.match('Hello',text)#matchHim2=re.match('Hi',text)ifm1:print(m1.group())else:print('你好字符匹配失败')ifm2:print(m2.group())else:print('Hi字符匹配失败')执行结果:因为Hello字符串在文本中的起始位置,所以匹配成功,但是Hi字符不在起始位置,所以返回NoneHelloHi字符匹配失败中正则表达式,用()表示要提取内容。undefined如果匹配失败,返回一个空列表,匹配/搜索只匹配一次语法deffindall(pattern,string,flags=0):importretext='Hello123Python678'#匹配字符串中的所有数字result=re.findall(r'\d+',text)print(result)#['123','678']四、re.finditer和findall类似,唯一不同的是它返回一个迭代器,而findall返回一个列表语法deffinditer(pattern,string,flags=0)importretext='Hello123Python678'#匹配字符串中的所有数字result=re.finditer(r'\d+',text)print(result)#
