正则替换 | 手把手教你入门Python之九十

上一篇:正则表达式练习 | 手把手教你入门Python之八十九
下一篇:贪婪和⾮贪婪模式 | 手把手教你入门Python之九十一

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

正则替换

正则表达式作用是用来对字符串进行检索和替换
检索: match search fullmatch finditer findall
替换: sub
Python中的re模块提供了re.sub⽤户替换字符串中的匹配项。
语法:

re.sub(pattern,repl,string,count=0)

参数:

  • pattern : 正则中的模式字符串。
  • repl : 替换的字符串,也可为⼀个函数。
  • string : 要被查找替换的原始字符串。
  • count : 模式匹配后替换的最⼤次数,默认 0 表示替换所有的匹配。

示例:

phone = "2004-959-559 # 这是⼀个电话号码"
# 删除注释
num = re.sub(r'#.*$', "", phone)
print ("电话号码 : ", num)
# 移除⾮数字的内容
num = re.sub(r'\D', "", phone)
print ("电话号码 : ", num)

repl可以使⽤⼀个字符串⽤来表示替换后的结果以外,还可以传⼊⼀个函数

def double(matched):
 test = int(matched.group('test'))
 return str(test * 2)
print(re.sub(r'(?P<test>\d+)', double, 'hello23hi34')) # hello46hi68
import re

t = 'afo2dlkf23af245qou3095'

print(re.sub(r'\d', 'x', t))  # afoxdlkfxxafxxxqouxxxx
print(re.sub(r'\d+', 'x', t))  # afoxdlkfxafxqoux

p = 'hello35good50'  # 把字符串里的数字 *2


# 第一个参数是正则表达式
# 第二个参数是新字符或者一个函数
# 第三个参数是需要被替换的原来的字符串

def test(x):
    y = int(x.group(0))
    y *= 2
    return str(y)


# sub内部在调用 test 方法时,会把每一个匹配到的数据以re.Match的格式传参
print(re.sub(r'\d+', test, p))  # test函数是自动调用的

配套视频

上一篇:mysql 学习(1)


下一篇:MySQL 记录不存在时插入 记录存在则更新的实现方法