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)a
a前面不是数字 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
迭代器是一个带状态的对象
有点乱…
阅读全文
0 0
- Python 正则... 有些乱
- 有些乱乱的心情
- 今天有些乱
- js 正则表达式 乱
- js 正则表达式2 乱
- python list.append乱序
- 非必须不要乱使用正则
- 正则表达式学习摘录-备忘【乱】
- 有些。
- C# 读取xml中特定节点的属性值 xmldocument方式 【有些乱,但有思路】
- 乱
- 乱
- 乱
- 乱
- 乱
- 乱
- 乱
- 乱
- 题解——Leetcode 5. Longest Palindromic Substring 难度:Medium
- ARM移植rz和sz命令
- VPN服务器的配置
- 算法竞赛入门经典(第2版)习题3-9 子序列(All in All) Uva10340
- SpringMVC学习(三)——SpringMVC的配置文件
- Python 正则... 有些乱
- androd的自定义Adapter中的NullPointerException
- html定义列表嵌套
- PDFbox的一些用法
- Java中SAX方式解析XML
- Struts2核心技术 (二)
- UVa140宽带
- STL之set/multiset容器
- 学习【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波---思维导图笔记