字符串切割
- 代码内容
str1 = 'fqx is a good man'
print(str1.split(' '))
print(re.split(r' +', str1))
- 代码示例图
字符串的替换和修改
sub(pattern, repl, string, count=0, flags=0) subn(pattern, repl, string, count=0, flags=0) pattern 正则表达式 repl 指定的用来替换的字符串 string 目标字符串 count 最多替换次数 flags 见上 功能:在目标字符串中,以正则表达式的规则匹配字符串, 再把他们替换成指定的字符串,可以指定替换的次数,如果不指定 替换所有的匹配字符串 区别:sub 返回一个被替换的字符串,后者返回一个元组,第一个元素是替换的字符串,后边是次数
- 代码内容
str3 = 'fqx is a good man good'
print(re.sub(r'(good)','nice',str3))
print(type(re.sub(r'(good)','nice',str3)))
print(re.subn(r'(good)','nice',str3))
print(type(re.subn(r'(good)','nice',str3)))
- 代码示例图
分组
- 除了简单的判断是否匹配之外,正则表达式还有提取子串的功能,用()表示分组
- 代码内容
str4 = '110-12345678'
# ?P起别名
m = re.match(r'(?P<first>\d{3})-(?P<second>\d{8})',str4)
# group(0) 代表原始字符串
print(m.group(0))
# 第1组
print(m.group(1))
# 第2组
print(m.group(2))
# 查看匹配的各组的情况
print(m.groups())
- 代码示例图
re.finditer 函数
原型:finditer(patter,string,flags=0) patter:匹配的正则表达式 string:要匹配的字符串 flags:标志位,用于控制正则表达式的匹配方式 功能:扫描整个字符串,返回一个迭代器,避免占满内存
- 代码内容
str2 = 'fqx is a good man ! fqx is a nice man ! fqx is a very headsome man!'
d = re.finditer(r'fqx', str2)
while True:
try:
# 在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行
l = next(d)
print(d)
except StopAsyncIteration as e:
break