Python—正则表达式

本文详细介绍了正则表达式的基础概念及其在Python网络数据爬取中的应用,涵盖了re模块的使用,包括findall、compile、match、search等函数的详解,并通过实例演示了如何使用正则表达式从文本中抽取数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于网络数据爬取的学习来自博主Eastmount的博客https://me.youkuaiyun.com/eastmount以及博主的书籍《Python网络数据爬取及分析从入门到精通(爬取篇)》

正则表达式(Regular Expression ,Regex或RE)又称为 正规表示法或常见表示法,常用来检索、替换那些符合某个模式的文本。他首先设定好一些特殊的字符及文字组合,然后通过组合的‘规定字符串’来对表达式进行过滤,从而获取或匹配用户想要的特定内容。

1、re模块

Python通过re模块提供对正则表达式的支持,但是在使用正则表达式之前需要导入re模块才能调用该模块的函数

import re

基本步骤是:先将正则表达式的字符串形式编译为pattern实例,然后使用pattern实例处理文件并获得一个匹配(match)实例,在使用match实例获取所需信息。常用的函数是findall,原型如下:

findall(string [ , pos[ , endpos]]) | re.findall(pattern  ,string [, flags])

该函数表示搜索字符串string,然后以列表形式返回全部能匹配的子字符串,其中参数re包括3个常见值(括号内是完整的写法):

(1)re.I:使匹配忽略大小写

(2)re.M:允许多行匹配

(3)re.S:匹配包括换行在内的所有字符串

另外,pattern对象是一个编译好的正则表达式,通过pattern提供的一系列方法可以对文本进行匹配查找;pattern对象不能直接实例化,必须使用re.complie()进行构造。

   2、complie方法

      complie( patternn [ , flags])

该函数根据包含正则表达式的字符串创建模式对象,返回一个patternn对象,参数flags是匹配模式,可以使用按位或“|”表示同时生效 ,也可以在可以在正则表达式字符串指定。

使用正则表达式来获取字符串中的数字内容:

>>> import re
>>> string = "A1.45,3,14,B5,c7,D2"
>>> regex = re.compile(r"\d+\.?\d*")
>>> print(regex.findall(string))
['1.45', '3', '14', '5', '7', '2']
>>> 

     3、match方法

      match 方法是从字符串的pos下标开始匹配pattern,如果pattern结束的时候已经匹配,则返回一个 match对象;如果匹配过程中pattern无法匹配,或者匹配未结束就已到达endpos,则返回None。

match(string [  , pos[ , endpos]] ) | re.match(pattern ,string[ , falgs])

参数string表示字符串;pos表示下标,pos和endpos的默认值分别是0和len(string);参数flags用于编译pattern时指定匹配模式。

4、search方法

search方法用于查找字符串中可以匹配成功的子字符串。从字符串的pos下标处尝试匹配pattern,如果pattern结束时仍可匹配,则返回一个match 对象;如果pattern结束时仍无法匹配,则将 pos加1后重新尝试匹配,若直到pos=endpos时仍无法匹配,则返回None

search(string [  , pos[ , endpos]] ) | re.search(pattern ,string[ , falgs])      

 参数string表示字符串;pos表示下标,pos和endpos的默认值分别是0和len(string);参数flags用于编译pattern时指定匹配模式。

5、group和groups方法

        group([group1,.......])方法用于获得一个或多个分组截获的字符串,当他指定多个参数时将以元组形式返回,没有截获字符串的组返回None,截获多次的组返回最后一次截获的子字符串。groups([default])方法以元组形式返回全部分组截获的字符串,相当于多次调用  group,参数default表示没有截获字符串的组以该值代替,默认为None                                                                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值