re
#常用库
2024-06-03
re模块三种主要的正则表达式匹配方法
match()
match(pattern, string)
会在 string 中匹配正则表达式 pattern ,这个方法从头开始匹配,且只匹配第一个命中项。没有匹配到时返回 None
。
1 |
|
输出:
1 |
|
通过 result.group()
和 result.span()
可以分别查看匹配到的字符串内容及其起止位置(这个起止位置是左闭右开的)
group
方法的使用
match_object.group(n)
:这里,n
是一个整数,代表正则表达式中第n
个括号(括号用于在正则表达式中创建分组)的匹配结果。- 如果正则表达式中有多个括号(分组),它们将按照在表达式中出现的顺序从左到右编号,从 1 开始。
group(0)
或group()
返回整个匹配的字符串。
search
search(pattern, string)
与match(pattern, string)
类似,但是是全局匹配而非从头匹配。它也只匹配第一个命中项。
findall
findall(pattern,string)
会进行全局匹配且匹配所有命中项,返回的是一个匹配到的字符串的列表,没有匹配到内容的时候返回空列表。
替换匹配的文本
1 |
|
字符串匹配规则
字符 | 功能 | |
---|---|---|
. | 匹配任意一个字符(除了\n) | |
[] | 匹配[ ]中列举的字符 | |
\. | 匹配 . | |
\d | 匹配数字 | |
\D | 匹配非数字 | |
\s | 匹配空白,即空格或Tab | |
\S | 匹配非空白 | |
\w | 匹配单词字符,即a-z、A-Z、0-9、_ | |
\W | 匹配非单词字符 |
- 字符串前面加
r
标记,表示其转义字符无效。正则表达式也是一个字符串,其中的\
应该被按照正则表达式的规则解析,而非转义字符。所以正则表达式前一般有r
标记。 []
使用例子:匹配所有英文字符:[A-Za-z]
。匹配2或4或6:[246]
- 正则表达式不要写额外的空格
数量匹配
字符 | 功能 |
---|---|
* | 匹配前一个规则的字符出现0至无数次 |
+ | 匹配前一个规则的字符出现1至无数次 |
? | 匹配前一个规则的字符出现0或1次 |
{m} | 匹配前一个规则的字符出现m次 |
{m,} | 匹配前一个规则的字符出现m至无数次 |
{m,n} | 匹配前一个规则的字符出现m至n次(左闭右闭) |
边界匹配
字符 | 功能 |
---|---|
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
\b | 匹配一个单词的边界 |
\B | 匹配一个非单词的边界 |
其他运算符
字符 | 功能 |
---|---|
| | 并 |
() | 确定优先级 |
- 如果有
()
进行分组,findall()
会将每个括号内的表达式匹配到的内容都找到并包装成元组。