本文最后更新于 258 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
模块re:正则表达式
正则表达式是用来匹配字符串或者子串的一种模式,匹配的字符串可以很具体,也可以很一般化。
Python 标准库提供了 re 模块:
import re
re.match()函数
re.match()
函数对字符串的开头进行匹配,返回第一个匹配对应的Match对象,否则返回None:
pat = "\d+"
s = "abc123abc123456"
re.match(pat, s)
由于字符串不是字母开头,没有匹配结果。
re.search()函数
与re.match()
函数不同,re.search()
函数会用正则表达式去匹配字符串中所有的子串,如果找到,返回第一个匹配对应的Match对象,否则返回None:
re.search(pat, s)
可以调用返回的Match对象的.group()方法查看匹配到的字符串:
m = re.search(pat, s)
m.group(0)
'123'
re.split()函数
re.split()
使用指定的正则表达式作为分隔符,对字符串进行分割,其用法为:
pat = " +"
s = "a b c d e"
re.split(pat, s)
['a', 'b', 'c', 'd', 'e']
re.sub()函数
re.sub()
函数对字符串中正则表达式匹配的部分进行替换:
pat = " +"
replace = ";"
s = "a b c d e"
re.sub(pat, replace, s)
'a;b;c;d;e'
正则表达式规则
正则表达式由一些普通字符和一些元字符组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义:
子表达式 | 匹配内容 |
---|---|
. | 匹配除了换行符之外的内容 |
\w | 匹配所有字母和数字字符 |
\d | 匹配所有数字,相当于 [0-9] |
\s | 匹配空白,相当于 [\t\n\t\f\v] |
\W,\D,\S | 匹配对应小写字母形式的补 |
[...] | 表示可以匹配的集合,支持范围表示如 a-z, 0-9 等 |
(...) | 表示作为一个整体进行匹配 |
¦ | 表示逻辑或 |
^ | 表示匹配后面的子表达式的补 |
-
|表示匹配前面的子表达式 0 次或更多次
-
|表示匹配前面的子表达式 1 次或更多次
? |表示匹配前面的子表达式 0 次或 1 次
{m} |表示匹配前面的子表达式 m 次
{m,} |表示匹配前面的子表达式至少 m 次
{m,n} |表示匹配前面的子表达式至少 m 次,至多 n 次
例如:
- ca*t 匹配: ct, cat, caaaat, ...
- ab\d|ac\d 匹配: ab1, ac9, ...
- ([^a-q]bd) 匹配: rbd, 5bd, ...