正则表达式是用来匹配字符串里内容最常用的方法。非常快速、非常准确,就是不大拟人。
其简单来说,就是用特殊的字符(元字符)排列组合来匹配字符串。
正则表达式语法
元字符
元字符就是固定含义的特殊符号
| 符号 | 含义 |
|---|---|
. |
匹配除换行符外任意字符 |
\w |
匹配字母或数字或下划线 |
\W |
匹配非字母或数字或下划线 |
\s |
匹配空白符 |
\S |
匹配非空白符 |
\d |
匹配数字 |
\D |
匹配非数字 |
\n |
匹配换行符 |
\t |
匹配制表符 |
^ |
匹配字符串开始 |
$ |
匹配字符串结尾 |
量词
量词控制前面元字符出现次数
| 符号 | 含义 |
|---|---|
* |
重复任意次 |
+ |
重复一次或更多次 |
? |
重复零次或一次 |
{n} |
重复 n 次 |
{n, } |
重复 n 次或更多次 |
{n, m} |
重复 n 到 m 次 |
匹配规则
| 符合 | 匹配规则 |
|---|---|
a | b |
匹配字符 a 或字符 b |
() |
构成一个组 |
[...] |
匹配[]中的任意字符 |
[^...] |
匹配除了[]中字符的所有字符 |
.* |
贪婪匹配:匹配尽可能长的 |
.*? |
惰性匹配:匹配尽可能短的 |
Python中的正则
Python中使用re模块撰写正则表达式。
| 方法名 | 语法 | 含义 |
|---|---|---|
findall |
re.findall(r'正则', '字符串') |
匹配字符串所有内容,以表格格式返回 |
finiter |
re.finditer(r'正则', '字符串') |
匹配字符串所有内容,以迭代器格式返回更高效 用 .group()函数获取迭代内容的具体数据 |
search |
re.search(r'正则', '字符串') |
匹配字符串的首个匹配内容,以match对象返回用 .group()获取数据没有返回 None |
match |
re.match(r'正则', '字符串') |
默认字符串开头就要匹配 |
compile |
re.compile(r'正则') |
预加载表达式,将正则表达式封装成一个对象,查询时可以直接调用 |