Python--正则库 re

compile()

  • 参数
    • string: 正则表达式字符串
    • flag: 匹配模式,多个值可以使用按位或运算符| 表示同时生效
      • re.I: 忽略大小写
      • re.M: 多行模式,改变^和$的行为
      • re.S: 点任意匹配模式,改变.的行为
      • re.L: 使预定字符类\w \W \b \B \s \S 取决于当前区域设定
      • re.U: 使预定字符类\w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
      • re.X: 详细模式。这个模式下正则表达式可以是多行,忽略空白符,并可以加入注释
  • 返回
    • Pattern对象,可以进行重复利用,以下的各种re.xxx匹配方法都可以对应的pattern.xxx方法

match()

  • 参数
    • pattern: 正则表达式字符串或者Pattern对象
    • string: 原始字符串
    • flag:
  • 返回值
    • 注意是从头开始匹配,如果第一个字符就没匹配则直接返回None,如果匹配成功,返回一个match对象
    • 如果没有分组,直接用返回对象调用group()方法即可获取到匹配的子串
    • 如果有分组,返回对象调用group()方法不带参数,则获取的是整个匹配的子串,如果带参数group(index),其中index表示第index个分组,index从1开始,则返回的是对应分组的子串
  • 参数
    • pattern: 正则表达式
    • string: 原始字符串
    • flag:
  • 返回值
    • 与match()方法类似,但是不是必须从第一个字符开始匹配,整个字符串中任意位置匹配成功都可以,返回第一个匹配的字串,match对象,可使用match对应的方法提取字符串
    • 如果没有分组,直接用返回对象调用group()方法即可获取到匹配的子串
    • 如果有分组,返回对象调用group()方法不带参数,则获取的是整个匹配的子串,如果带参数group(index),其中index表示第index个分组,index从1开始,则返回的是对应分组的子串

findall()

  • 参数
    • pattern: 正则表达式
    • string: 原始字符串
    • flag:
  • 返回值
    • 如果没有分组,则所有匹配上的子字符串组成的list
    • 如果只有一个分组,则是每个匹配的子串中分组部分组成的list
    • 如果有多个分组,则是由所有匹配的子串的分组tuple组成的list

finditer()

  • 参数
    • pattern: 正则表达式
    • string: 原始字符串
    • flag:
  • 返回值
    • 以迭代器的形式返回能匹配的全部Match对象,需要循环调用Match对象的group()方法提取匹配的字符串

split()

  • 参数
    • pattern: 正则表达式
    • string: 原始字符串
    • maxsplit: 最大分割次数
    • flag:
  • 返回值
    • 所有被正则表达式分割出来的子串组成的list,注意:结果中可能会包含空字符串

sub()

  • 参数
    • pattern: 正则表达式
    • repl:
      • 如果是字符串:可以使用 \id或者\g或者\g引用分组,其中id表示分组序号,从1开始;name表示分组名称,如果对分组进行了命名的话。
      • 如果是函数:会传入一个Match对象,返回一个字符串进行替换,注意这个字符串无法引用分组
    • string: 原始字符串
    • count: 被替换的次数
  • 返回值:
    • 被替换后的字符串

subn()

  • 类似sub()
  • 返回的是元组:(sub()的结果, 替换的次数)

前面说的匹配结果中的Match对象

  • 属性
    • string: 匹配时用到的文本
    • re: 匹配时用到的Pattern对象
    • pos: 正在表达式开始搜索的索引
    • endpos: 正则表达式结束搜索的索引
    • lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,则返回None
    • lastgroup: 最有一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,则返回None
  • 方法
    • group([group1,group2...]): 获取一个或多个分组截获的字符串,如果传入多个参数,则以元组的形式返回
      • group1, group2...: 参数可以是分组编号,或者分组名
      • 分组编号0表示整个匹配的字符串
      • 分组编号从1开始对应具体的分组
    • groups([default]): 以元组形式返回全部分组截获的字符串,相当于group(1, 2...),default表示没有截获字符串的组的默认值,默认为None
    • groupdict([default]): 返回有别名的组组成的字典,没有别名的组不在返回结果中
    • start([group]): 返回指定的组截获的子串在文本中的起始索引,group默认为0
    • end([group]): 返回指定的组截获的子串在文本中的结束索引,group默认为0
    • span([group]): 返回(start(group), end(group))
    • expand(template): 将匹配到的分组代入template中,可以使用 \id或者\g或者\g引用分组
posted @ 2022-03-03 22:28  liDB  阅读(156)  评论(0编辑  收藏  举报