python核心--正则表达式re模块

使用:

import re
re.match(r'partten', data)  # 从数据头开始匹配

如果成功匹配返回结果对象,通过.group()获取匹配数据
匹配失败,返回None

re.search(r'partten',data) # 从数据中左往右进行搜索匹配,默认匹配一次

成功匹配返回结果对象,通过.group()获取匹配数据
匹配失败,返回None

元字符


  • .匹配1个任意字符,除了\n
  • []匹配[]中任意一个字符—白名单
  • [^…]匹配不再[]中的任意一个字符—黑名单
  • [n-m]匹配n-m中任意一个字符
  • \d:匹配一个数字字符
  • \D:匹配一个非数字字符
  • \s:space空白字符[\r\n\v\t\f]
  • \S:非空白字符
  • \w:单词字符,[\da-zA-Z_]:注意有下划线
  • \W:非单词字符

扩展:py2–按照ascll计算,\w不包括中文
py3–按照unicode计算,\w包含中文

匹配多个字符:

  • {n}:匹配n次
  • {n,m}:n到m次
  • {n,}:至少n次
  • +:至少一次
  • *:至少0次
  • ?:最多1次

位置:

  • ^:开始位置
  • $:结束位置

分组:

  • 目的:提取出整体数据中,符合某种规律的数据
  • 创建:(partten)
  • 取出数据:
    group()===.group(0)表示第0个分组,表示整体匹配结果,正则表达式默认没写最外围的()
    .group(n):获取第几组数据
  • 分组引用:
    • 目的:将前面分组的匹配结果,用到后续某个位置继续匹配
    • 使用方法1:\分组编号
      re.match(r'^(\d{3,4})-(\d{6,8})\1-\2$","021-1234567 021-1234567")
    • 使用方法2:
      先给前面的起名(?P)
      在后面使用(?P=name)

|(竖线):匹配左边或者右边

  • findall(partten,数据)查找数据中符合规律的所有数据,返回成列表
  • sub(正则,“替换成的数据”,原数据,count = -1:返回匹配替换之后的数据。
    参数2可以是函数名,默认匹配之后一次传入函数参数进行处理,返回字符串
  • split(正则,数据)按照正则匹配成功切割,返回值为列表

贪婪模式(默认)

  • 非贪婪模式,在量词后面加?
  • 贪婪和非贪婪前提是满足整体匹配结果。

\问题,默认\需要\,所以加r可避免麻烦

猜你喜欢

转载自blog.csdn.net/lb786984530/article/details/81147532