Python 正则... 有些乱

来源:互联网 发布:网络系统解决方案 编辑:程序博客网 时间:2024/05/29 09:46

正则表达式: re 基本单元 字符

  • 贪婪匹配:尽可能多地匹配
  • 非贪婪匹配:尽可能少地匹配
  • 特殊字符 不使用字符的原意
  • 匹配开头 ^ 界定符
  • 匹配结尾 $ 界定符
  • 匹配任意个左侧字符 * 限定符
  • 匹配不少以1个左侧字符 + 限定符
  • 匹配不多于1个左侧字符 ? 限定符
  • 匹配一个 . 匹配任意字符除了换行符 特殊字符
  • *?,+? ,?? 使用非贪婪匹配,即达到最低匹配
  • 限定符:{m},{m,n},{m,} {n,m}?非贪婪 限定符
  • \ 转义
  • [] 集合
  • | 选择 a|b a、b二选一
  • () 很多圆括号 子组

  • (…) 捕获匹配 分组
  • (?….) ❓后面的第一个字符决定使用什么语法

  • (?ailmsux) ailmsux 中国每个字符代表一种匹配模式,可组合使用
  • (?:…) 非捕获匹配 分组
  • (?P…) P 是大写的!
  • (?P=name) ‘(?Pabc)hhhhhh(?P=pname)’ —> ‘abchhhhhhabc’
  • (?#...) 注释,不会参与匹配
  • (?=...) 之后的字符串内容需要匹配表达式才能匹配成功 a(?=\d) a后面需要数字 a11
  • (?!...) 之后的字符串内容需要不匹配表达式才能成功 a(?!\d) a后面不是数字 ab
  • (?<=...)前面的字符串内容需要匹配表达式才能成功 (?<=\d)a a前面需要时数字 3a
  • (?<!...) 前面的字符串内容不需要匹配表达式才能成功(?<!\d)aa前面不是数字 ca
  • (?(id/name)yes-patten|no-patten)

  • \ 转义escape
  • \number
  • \A 匹配字符串开头
  • \b 单词边界
  • \B 非单词边界
  • \w 等价于[a-zA-Z0-9_]
  • \W 等价于[^a-zA-Z0-9_]
  • \d 数字 等价于[0-9]
  • \D 等价于[^0-9]
  • \s 空白 [ \t\n\r\f\v]
  • \S 非空白
  • \Z 匹配字符串结尾

re函数

  • re.compile 将匹配模式转为正则表达式对象 regex
  • re.search(patten,string,flags=0) 从头开始找,定位第一个出现的匹配
  • re.match 从头开始匹配,可以部分匹配
  • re.fullmatch 全匹配,比较好
  • re.split 分割
  • re.findall 找出所有匹配项
  • re.finditer 返回迭代器
  • re.sub 替换
  • re.subn
  • re.escape
  • re.purge

regex <—-re.compile, pattern编译后的 对象

  • regex.search 从头到尾搜索,匹配到第一个返回结果 match obj
  • regex.match 从头匹配,部分匹配 返回 match obj
  • regex.fullmatch 从头开始 全匹配 返回match obj /
  • regex.split 分割 分组保留 不分组不保留
  • regex.findall 找到所有匹配,返回列表
  • regex.finditer
  • regex.sub 替换
  • regex.subn 替换
  • regex.flags
  • regex.groups
  • regex.groupindex
  • regex.pattern

match object 匹配结果->对象

  • match.expand
  • match.group 返回匹配到字符集或者特定子组
  • match.groups 所有子组
  • match.groupdict
  • match.start 匹配范围的起点
  • match.end 匹配范围的终点
  • match.span 匹配到的范围 方法
  • match.pos
  • match.endpos
  • match.lastindex 最后一个下标
  • match.lastgroup 最后一个子组
  • match.re 目标模式 属性
  • match.string 源字符串 属性

怎么使用正则?

  • 写匹配模式pattern
  • 准备需要进行匹配的字符串
  • 根据需要选择响应的函数
  • 处理匹配结果

回答一个问题,什么是搜索什么是匹配?

搜索和匹配的不同

  • 匹配match:一个字符串能否从起始处全部或者部分匹配给定的模式,匹配成功或者失败,成功返回匹配结果;从头开始匹配,只要不匹配就失败
  • 匹配用来验证:邮箱、电话、等
  • 搜索search:在字符串中任意部分查找模式,从头开始,直到找到为止,找不到再决定匹配失败
  • 搜索用来查找和替换
  • 从字符串的开头、结尾、单词边界来匹配
  • match 和search 的终止条件不同

元数据分两大类:可以用来计算的(数值),不可计算的(文本),

你在表达什么观点?你在说明什么?你行动了么?你有多大的欲望?

什么知识点?用什么案例来解释?用在哪里?

重复 特殊字符 分组 (),捕获分组

  • 带分组的保留匹配结果,不带分组的删除

怎么考察函数?函数的功能?函数怎么工作的?

怎么考察模块? 有哪些类?哪些函数?哪些常量?

为什么使用前缀r

  • 举个��:\b 在正则中表示单词边界,在ascii码中表示退格键,在’\b’中,会按照退格键解释,而不是单词边界,为了使用在正则中的含义,在pattern 前放置前缀 r,即r’\b’;为什么’\w’、’\d’不需要呢?因为在ascii 表中,他们没有特殊含义,就这样简单!

关键字 pattern string

原始字符串

限制性宽松的模式

可迭代对象 迭代器? 迭代器可迭代,可使用next函数,可迭代对象可迭代不可使用next

迭代器是一个带状态的对象

有点乱…

原创粉丝点击