基本使用方法
方法一
- 使用compile()函数将正则表达式的字符串形式编译为一个 Pattern 对象
- 通过 Pattern对象提供的方法对文本进行匹配查找,获得匹配结果(一个 Match 对象)
- 使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作
方法二
直接使用re中的各种函数
compile 函数
compile 函数用于编译正则表达式,生成一个 Pattern 对象
Pattern 对象
方法 | 作用 |
---|
match方法 | 从起始位置开始查找,查找一次 |
search 方法 | 从任何位置开始查找,查找一次 |
findall 方法 | 全部匹配,返回列表 |
finditer 方法 | 全部匹配,返回迭代器 |
split 方法 | 分割字符串,返回列表 |
sub 方法 | 替换查找到的 |
match对象
匹配成功时会返回一个match对象
匹配对象方法 | 描述 |
---|
group(n) | 返回第n个匹配成功的分组 (0代表全部返回) |
groups() | 返回一个包含所有小组字符串的元组 |
span(n) | 返回第n个匹配结果的索引 |
flags参数
参数 | 描述 |
---|
re.I | 忽略大小写 |
re.L | 表示特殊字符集 \w, \W, \b, \B, \s, \S |
re.M | 多行模式 |
re.S | 即为 . 并且包括换行符在内的任意字符 |
re.U | 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S |
re.X | 为了增加可读性,忽略空格和 # 后面的注释 |
match 方法
match 方法用于查找字符串的头部(也可以指定起始位置),它是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。
写法一
- pattern.match(string, pos, endpos)
参数 | 描述 |
---|
string | 待匹配字符串 |
pos | 指定字符串的起始位置,默认为 0 |
endpos | 指定字符串的结束位置,默认为字符串的长度 |
案例
import re
pattern = re.compile(r'\d+')
result1 = pattern.match('3bc24d1542',0)
print(result1)
print(result1.group())
print(result1.groups())
print(result1.span())
写法二
- re.match(pattern, string,flags)
参数 | 描述 |
---|
pattern | 正则表达式 |
string | 匹配字符串 |
案例
import re
pattern = re.compile(r'\d+')
result1 = pattern.match('3bc24d1542',0)
print(result1)
findall 方法
全部匹配,返回一个列表
写法一
- pattern.findall(string, pos, endpos)
参数 | 描述 |
---|
string | 待匹配字符串 |
pos | 指定字符串的起始位置,默认为 0 |
endpos | 指定字符串的结束位置,默认为字符串的长度 |
案例
import re
pattern = re.compile(r'\d*')
result1 = pattern.findall('abc24d1542',0)
print(result1)
写法二
- re.findall(pattern, string,flags)
参数 | 描述 |
---|
pattern | 正则表达式 |
string | 匹配字符串 |
案例
import re
result1 = re.findall(r'\d*','abc24d1542')
print(result1)
finditer 方法
全部匹配,返回迭代器
写法一
- pattern.finditer(string, pos, endpos)
参数 | 描述 |
---|
string | 待匹配字符串 |
pos | 指定字符串的起始位置,默认为 0 |
endpos | 指定字符串的结束位置,默认为字符串的长度 |
案例
import re
pattern = re.compile(r'\d*')
result1 = pattern.finditer('abc24d1542',0)
print(result1)
for i in result1:
print(i)
写法二
- re.finditer(pattern, string,flags)
参数 | 描述 |
---|
pattern | 正则表达式 |
string | 匹配字符串 |
案例
import re
result1 = re.finditer(r'\d*','abc24d1542')
print(result1)
for i in result1:
print(i)
split 方法
split 方法按照能够匹配的子串将字符串分割后返回列表
写法一
- pattern.split(string ,maxsplit)
参数 | 描述 |
---|
string | 待匹配字符串 |
maxsplit | 指定最大分割次数,不指定将全部分割 |
案例
import re
pattern = re.compile(r'[\s\,\;]+')
result = pattern.split('a,b;; c d')
print(result)
写法二
- re.split(pattern, string,maxsplit ,flags)
参数 | 描述 |
---|
pattern | 正则表达式 |
string | 匹配字符串 |
maxsplit | 指定最大分割次数,不指定将全部分割 |
案例
import re
result = re.split(r'[\s\,\;]+','a,b;; c d')
print(result)
sub 方法
替换查找到的
- re.sub(repl, string,count)
参数 | 描述 |
---|
repl | 用于替换的字符串或者函数 |
string | 匹配字符串 |
count | 指定替换次数,不知道则全部替换 |
案例
import re
pattern = re.compile(r'\d+')
result = pattern.sub('x','a2ni68')
print(result)