第十二课~

本文深入探讨了Python中re模块的使用,包括直接函数操作和正则表达式对象的match(), search(), findall()方法,以及子模式、字符串分隔和替换功能。通过实例演示了如何查找、替换和分割字符串,以及如何利用正则表达式进行复杂模式匹配。
摘要由CSDN通过智能技术生成

正则表达式(二)

一、re模块主要方法
  • 在Python中主要使用re模块来实现正则表达式的操作,具体使用时,既可以直接使用re模块的函数进行字符串处理,也可以将模块编译为正则表达式对象,然后使用正则表达式对象的方法来操作字符串。
    在这里插入图片描述
二、直接使用re模块方法
  • 可以直接使用re模块函数来实现正则表达式操作
>>> import re                            #导入re模块
>>> text = 'alpha. beta....gamma delta'  #测试用的字符串
>>> re.split('[\. ]+', text)      #使用指定字符作为分隔符进行分隔 (1)
>>> re.split('[\. ]+', text, maxsplit=2) #最多分隔2次 (2)
['alpha', 'beta', 'gamma', 'delta']
['alpha', 'beta', 'gamma delta']
三、使用正则表达式对象
(一)
  • 首先使用re模块的compile()方法将正则表达式编译生成正则表达式对象,然后再使用正则表达式对象提供的方法进行字符串处理。
  • 使用编译后的正则表达式对象可以提高字符串处理速度,也提供了更强大的文本处理功能
  • 正则表达式对象的match(string[, pos[, endpos]])方法用于在字符串开头或指定位置进行搜索,模式必须出现在字符串开头或指定位置;
  • 正则表达式对象的search(string[, pos[, endpos]])方法用于在整个字符串中进行搜索;
  • 正则表达式对象的findall(string[, pos[, endpos]])方法用于在字符串中查找所有符合正则表达式的字符串并返回列表。
(二)match()、search()、findall()
  • match(string[, pos[, endpos]])方法在字符串开头或指定位置进行搜索,模式必须出现在字符串开头或指定位置;
  • search(string[, pos[, endpos]])方法在整个字符串或指定范围中进行搜索;
  • findall(string[, pos[, endpos]])方法在字符串指定范围中查找所有符合正则表达式的字符串并以列表形式返回。
>>> import re
>>> example = 'ShanDong Institute of Business and Technology'
>>> pattern = re.compile(r'\bB\w+\b')  #查找以B开头的单词
>>> pattern.findall(example)   #使用正则表达式对象的findall()方法(1)
>>> pattern = re.compile(r'\b[a-zA-Z]{3}\b')#查找3个字母长的单词
>>> pattern.findall(example)   #(2)
['Business']    #(1)
['and']       #(2)
(三)sub()、subn()
  • 正则表达式对象的sub(repl, string[, count = 0])和subn(repl, string[, count = 0])方法用来实现字符串替换功能,其中参数repl可以为字符串或返回字符串的可调用对象
(四)字符串分隔
  • 正则表达式对象的split(string[, maxsplit = 0])方法用来实现字符串分隔
>>> example = r'one,two,three.four/five\six?seven[eight]nine|ten'
>>> pattern = re.compile(r'[,./\\?[\]\|]')     #指定多个可能的分隔符
>>> pattern.split(example)
['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']
四、子模式与match对象
  • 使用()表示一个子模式,括号中的内容作为一个整体处理,例如’(red)+’可以匹配’redred’、’redredred‘等多个重复’red’的情况。
>>> pattern = re.compile(r'(\d{3,4})-(\d{7,8})')
>>> pattern.findall(telNumber)
[('0535', '1234567'), ('010', '12345678'), ('025', '87654321')]
  • 正则表达式对象的match方法和search方法匹配成功后返回match对象。match对象的主要方法有:
    group():返回匹配的一个或多个子模式内容
    groups():返回一个包含匹配的所有子模式内容的元组
    groupdict():返回包含匹配的所有命名子模式内容的字典
    start():返回指定子模式内容的起始位置
    end():返回指定子模式内容的结束位置的前一个位置
    span():返回一个包含指定子模式内容起始位置和结束位置前一个位置的元组。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值