正则表达式
- 正则表达式是一种可以让一些复杂的字符串问题变得简单的工具。
- re模块
fullmatch(正则表达式,字符串)
: 判断整个字符串是否满足正则表达式描述的规则(完全匹配),不满足返回Nonamatch(正则表达式,字符串)
:只匹配字符串开头是否满足正则表达式描述的规则,不满足返回Nona- python 中提供正则表达式的方法:提供一个字符串,字符串内容是一个正则表达式,这个字符串的最前面需要加
r
- python 中提供正则表达式的方法:提供一个字符串,字符串内容是一个正则表达式,这个字符串的最前面需要加
search(正则表达式,字符串)
: 在整个字符串中查找第一个满足正则表达式描述的规则的字串,找不到返回Nonafindall(正则表达式,字符串)
:获取整个字符串所有满足正则表达式的字串, 返回字符串中满足正则表达式的内容的列表(注意分组问题)finditer(正则表达式,字符串)
:获取整个字符串所有满足正则表达式的字串, 返回迭代器,迭代器中的元素是匹配对象sub(正则表达式,字符串1, 字符串2)
:将字符串2中所有满足正则的字串,全部替换成字符串1split(正则表达式,字符串)
:将字符串中所有满足正则的字串作为切割点,对字符串进行切割- 正则语法内容
匹配类符号 | 约束字符串中某个位置上的字符是什么样的字符 |
---|---|
普通符号 | 在正则表达式中表示字符本身的符号 |
特殊符号: | |
. | 匹配任意一个字符 |
\d | 匹配任意一个数字字符,等价于[0-9] |
\D | 匹配任意一个非数字字符,等价于[^0-9] |
\S | 匹配任意一个非空白字符 |
\s | 匹配任意一个空白字符(换行,空格,制表符) |
[字符集] | 匹配字符集中任意一个字符 |
[\u4e00-\u9fa5] | 匹配任意一个中文 |
[^字符集] | 匹配非字符集中任意一个字符 |
控制次数的符号 | 匹配类符号+次数 |
---|---|
* | 任意次数(0次或者多次) |
+ | 至少一次(1次或者多次) |
? | 0次或者1次(有或者没有) |
{n, m} | n~m 范围内 |
贪婪和非贪婪模式:
在匹配次数不确定的时候,匹配次数有贪婪和非贪婪两种模式
- 贪婪模式:默认的贪婪模式:
+
、*
、{M,N}
、{M, }
、{ , N}
- 贪婪模式:如果多种匹配次数都可以匹配成功,最后取最大的次数进行匹配
- 非贪婪模式:
+?
、*?
、{M,N}?
、{M, }?
、{ , N}?
分支和分组 | |
---|---|
分组 -----> () | 将正则不一部分使用() 括起来,表示一个分组,整体控制次数 |
重复匹配结果:在正则中使用() 添加分组,然后在正则用\M 来重复钱买你第M 个分组的匹配结果 | |
捕获:findall 函数在正则表达式中有分组的时候,只获取分组匹配的结果 | |
分支---->| | 正则1|正则2|正则3|… 相当于或者 |
如果正则的部分要进行分支选择,需要将部分分支加() |
检测类符号 | 检测符号所在的位置是否符合条件,必须是在匹配成功的前提下才会去检测 |
---|---|
\b | 单词边界:检测是否\b 是单词边界。凡是可以将两个单词区分开的符号都是单词边界 |
^ | 检测字符串开头 |
$ | 检测字符串结尾· |
转义字符:
在正则中本身具备特殊功能或者特殊意义的符号前加\
,让他的功能消失,办成普通字符
[]
也可以让独立存在且有特殊意义的符号功能消失