Python中的re模块

Python中的re模块


Python使用re模块提供了正则表达式处理的能力。

常量

常量 对应值 说明
re.I
re.IGNORECASE
2 忽略大小写
re.M
re.MuLTILINE
8 多行模式
re.S
re.DOTALL
16 单行模式
re.X
re.VERBOSE
64 忽略表达式中的空白字符
  • 使用|或位运算可以开启多种选项。相加也可以。
  • 注意:
    1. Python默认中re接受正则表达式中的命名分组格式为:(?P<name>exp)
    2. 命名分组的反向引用为(?P=name)
    3. Python的后发断言(?<=exp)和(?<!exp)中exp必须是常量例如:a|b,abc等不能出现a*等非固定长度的后发断言。如果出现会报"error: look-behind requires fixed-width pattern"错误。

常用方法

编译

  • re.compile(pattern,flags=0)->regex #将正则表达式模式编译成正则表达式对象。
    • pattern #需要编译的正则表达式
    • flags #正则表达式使用的模式。re.S|re.M 开启多行模式和单行模式
      • 常用模式有:re.I,re.M,re.S,re.X
        为了提高效率,正则表达式可以被编译,这些编译后的结果被保存,下次使用同样的pattern的时候,就不需要再次编译。
        编译后的对象同样可以使用match(),search()方法进行匹配。

单次匹配

  • re.match(pattern,string,flags=0)->match #匹配从字符串的开头匹配,返回match对象
  • regex.match(string[,pos[,endpos]])->match #regex对象match方法可以重设定开始位置和结束位置。返回match对象
    • pattern #正则表达式
    • string #需要匹配的字符串
    • flags #正则表达式使用的模式
      • 常用模式有:re.I,re.M,re.S,re.X
    • pos #匹配字符串的开始位置,默认从0索引位置开始匹配
    • endpos #匹配字符串的结束位置(不包含结束位置),默认值为len(string)
  • 注意:
  1. match会从字符串的开头开始查找,即使在re.M(多行模式)中。^符号也只表示字符串的开头,$符号也只表示字符串的结尾。即:多行模式re.M对match无效
  2. match只会从字符串的开始位置(开始位置可以是字符串的开头,也可以用pos指定)与正则表达式的第一个字符开始匹配。
  3. regex.match中指定开始位置和结束位置后启用多行模式,对^和$符号无影响,依然是指原字符串的开头和结尾
  4. re.match,re.search,re.fullmatch三个匹配方法中只有re.match忽略多行模式的影响。
    简单示例1:
import re
str1 = """123
456"""
print(re.match("^\d*",str1,re.M))
print(re.match("^\d*",str1))
print(re.match("^[\d\n]*",str1,re.M))

regex = re.compile("^\d*")
print(regex.match(str1))
#注意regex可以重新指定字符串的开始位置,和结束位置(不包含结束位置)
print(regex.match(str1,0,2))
#注意:regex中开始位置和结束位置对^和$符号无影响,依然是指原字符串的开头和结尾
print(regex.match(str1,3))  #返回值为None,因为截开始的位置不是字符串的开头。所以无法匹配

reg003
简单示例2:

import re
import re
str2 = """abc abc bcd eff aaa
abc bcd"""
print(re.match("bcd",str2)) #match只会从字符串的开头与正则表达式开始位置进行匹配。
print(re.match("^a",str2,re.M)) #依旧从开始位置查找,多行模式无影响

reg004

  • re.search(pattern,string,flags=0)->match #从头搜索到第一个匹配
  • regex.search(string[,pos[,endpos]])->match #从头搜索到第一个匹配
    • pattern #正则表达式
    • string #需要匹配的字符串
    • flags #模式
    • pos #匹配的起始位置
    • endpos #匹配的结束位置(不包含结束位置)
    import re
    str2 = """abc abc bcd 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值