re模块的定义
re模块是借助于正则对字符串进行匹配操作的python内置模块。
re模块的方法
方法 | 作用 |
---|---|
compile(pattern, flags=0) | 根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 |
match(pattern, string, flags=0) | 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 |
search(pattern, string, flags=0) | 扫描整个字符串并返回第一个成功的匹配。 |
findall(pattern, string, flags=0) | 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。 |
sub(pattern, repl, string, count=0, flags=0) | 在string中将匹配到的元素替换为repl并返回 |
split(pattern, string, maxsplit=0, flags=0) | 在按照能够匹配的子串将字符串分割后返回列表 |
正则语法
元字符 | 匹配内容 |
---|---|
. | 匹配除换行符以外的任意字符 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
\A | 匹配字符串开始,等价于^ |
\Z | 匹配字符串的结尾,等价于$ |
\w | 匹配字母或数字或下划线 |
\W | 匹配非字母数字及下划线 |
\s | 匹配任意空白字符,等价于 [ \t\n\r\f] |
\S | 匹配任意非空字符 |
\d | 匹配任意数字,等价于 [0-9] |
\D | 匹配任意非数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
[…] | 用来表示一组字符,单独列出:[amk] 匹配 ‘a’,‘m’或’k’ |
[^…] | 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。 |
[a-zA-Z0-9] | 匹配任意字母及数字 |
a | b | 匹配a或b |
量词 | 用法说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
re模块实例
匹配特定长度的数字
res = re.search("\d{3}","12ab345cde")
#在字符串中匹配长度为3的纯数字
res.group()
'345'
re模块高阶
’(?P…)’ 分组匹配
res = re.search("(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})","110221198902322232")
res.groupdict()
{'province': '110', 'city': '221', 'born_year': '1989'}