【正则表达式05】re 模块深入应用

字符串切割

  • 代码内容
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
发布了96 篇原创文章 · 获赞 103 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38114487/article/details/104707371