re模块总结
在使用re正则表达式时,先要使用re模块提供的特殊字符构建一个模式串pattern
,再传入re模块提供的一些方法进行模式匹配
re模块中用来匹配单个字符的 特殊字符
.
:匹配除换行符\n以外的任意字符\w
:匹配字母、数字或下划线。等价于[a-zA-Z0-9_]\d
:匹配数字。等价于[0-9]。\s
:匹配空白字符,包括空格、制表符、换行符等。[]
:匹配方括号内指定的字符集合,可以使用字符-
表示范围,或者使用字符^
表示取反- 对于
\W
\D
\S
:匹配对应小写字符的补集
re模块匹配多个字符
*
:匹配前一个字符0次或多次+
:匹配前一个字符1次或多次?
:匹配前一个字符0次或1次{m}
:匹配前一个字符恰好m次{m,n}
:匹配前一个字符至少m次,至多n次
匹配分组
|
:匹配左右两边任意一个模式串()
:将括号内的表达式作为一个分组,可以通过编号或名称引用\num
:引用编号为num的分组,每个括号为一个分组,从1开始编号(?P<name>)
:给分组指定一个名称,每个括号为一个分组,可以通过\g或\g’name’引用
re模块中常用的方法
re.search(pattern, string)
:在字符串中查找第一个匹配pattern的子串,返回一个Match对象或None。re.match(pattern, string)
:在字符串开头查找匹配pattern的子串,返回一个Match对象或None。re.fullmatch(pattern, string)
:检查整个字符串是否完全匹配pattern,返回一个Match对象或None。re.findall(pattern, string)
:在字符串中查找所有匹配pattern的子串,返回一个列表。re.finditer(pattern, string)
:在字符串中查找所有匹配pattern的子串,返回一个迭代器。re.sub(pattern, repl, string)
:在字符串中替换所有匹配pattern的子串为repl,返回一个新字符串。re.split(pattern, string)
:根据pattern分割字符串,返回一个列表。
贪婪
- 对于
ab*
,在匹配时默认会匹配尽可能多的b
,例如,在匹配abbbbbc
时,会匹配到abbbbb
,此时认为是贪婪
的。 - 使用
?
使其变为非贪婪,ab*?
此时会匹配尽可能少的b
,而*
是匹配前一个字符0次或多次,最少即为0次,得到a
2023.3.17