re模块的核心函数与方法

    python的标准库re提供了丰富的函数与方法帮助我们操作正则表达式,有:

compile(pattern,flags=0)

    使用任何可选的标记来编译正则表达式的模式,然后基于pattern返回一个正则表达式对象

match(pattern,string,flags=0)

    尝试使用带有可选标记的正则表达式的模式来匹配字符串。如果匹配成功,就返回匹配对象,失败则返回None

    可见match()是从字符串的起始部分对模式进行匹配

m=re.match('foo','food')
m.group() #'foo'
m=re.match('foo','seafood')
m.group() #None
 
search(pattern,string,flags=0)

    使用可选标记搜索字符串中第一次出现的正则表达式模式,如果成功就返回匹配对象,失败则返回None

    search()不但会搜索模式在字符串中第一次出现的位置,而且严格地对字符串从左到右搜索

m=re.search('foo','seafood')
m.group() #'foo'
  
findall(pattern,string,flags)    查找字符串中所有非重复出现的正则表达式模式,并返回一个匹配列表
re.findall('car','carry the barcardi to the car')#['car','car','car']
finditer(pattern,string,flags)    与findall相同,但返回的不是一个列表,而是一个迭代器。对于每一次匹配,迭代器都返回一个匹配对象.相较于findall()它更节省内存
split(pattern,string,max=0)    根据正则表达式的模式分隔符,split函数将字符串分割为列表,然后返回成功匹配的列表分割最多进行max次(默认分割所有匹配成功的位置)

 

sub(pattern,repl,string,count=0)    使用repl替换所有正则表达式的模式在字符串中出现的位置,可以使用count规定替换次数。同样的,repl中可以使用\N来指代替换字符串中使用的分组编号。下方代码进行了日期格式的转换
re.sub(r'(\d{1,2})/(\d{1,2})/(\d{2}|\d{4})'
,r'\2/\1/\3','6/15/2021')

#'15/6/2021'
subn(pattern,repl,string,count=0)    基本与sub()函数相同,区别在于subn()函数返回的是一个替换后的字符串与替换次数组成的元组
group(num=0)返回整个匹配对象,或者编号为num的特定子组
groups(default=None)    返回一个包含所有匹配子组的元组(如果没有成功匹配,则返回一个空元组)
groupdict(default=None)    返回一个包含所有匹配的命名子组的字典,所有子组的名称作为字典的健(如果没有成功匹配,则返回一个空字典)

    在实验中发现了如下情况(t='abc1def')

    可以看到将(?<=...)置于\w+之后时匹配对象为abc1,猜测可能原因为(?<=\d)选中了def,而\w+的位置在其之前,所以就匹配到了def之前的字符abc1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值