正则替换 | 学习笔记

简介: 快速学习 正则替换

开发者学堂课程【Python入门 2020年版正则替换】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10450


正则替换


正则表达式作用是用来对字符串进行检索和替换

检索: MatchsearchfulLmatchfinditerfindall

替换: sub

想把一个字符串中的数字全部替换成 x,该怎么做。

t = 'afo2dlkf23af245qou3095'

print(re.sub(r'\d', 'x' , t))

输出的结果为:

afoxdlkfxxafxxxqouxxxx

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

输出的结果为:
afoxdlkfxafxqoux

如果加一个”+“,连在一起的数字都只会变成一个x

第一个参数是正则表达式

第二个参数是新字符或者一个函数

第三个参数是需要被替换的原来的字符串

这个时候我们试图将第二个参数变成一个函数会是什么情况。

p = hello34good23

def test():

pass

print(re.sub(r' ld' , test,p))

运行后会报错:

image.png

Test 需要0个位置参数但是给了1个。Test 函数是自动调用的。

def test(x):

print(x)

print(re.sub(r' ld' , test,p))

这个时候输出的结果就是:

<re.Match object; span=(56), match='3 '>

<re.Match object; span=(67), match='4'>

<re.Match object; span=(1112) match='2 '>

<re.Match object; span=(1213) match='3'>

Hellogood

sub 内部在调用 test 方法时,会把每一个匹配到的数据以 re.Match 的格式传参。

拿到 group(0)之后我们就可以进行下一步操作,我们尝试将这些数字乘2

def test(x):

y = int(x.group(0))

y *= 2

return str(y)

print(re.sub(r' \d' , test,p))

这个时候我们在输出的结果就是:

hello68good46。

我们就可以把数字成功乘2了。注意返回的时候不能直接返回y的值,应该返回一个字符串,返回 str(y)

如果我们想把两个数字变成一个整体,我们就需要用到+,就要变成:

print(re.sub(r' \d+' , test,p)),如果字符串变成 hello35good23,

会输出 hello70good463546被看成一个整体了。

相关文章
|
8月前
|
JavaScript 前端开发 Java
正则表达式深度解析:匹配任意字符串
【4月更文挑战第1天】
4388 0
|
8月前
|
JavaScript 前端开发 Java
|
6月前
|
数据采集 Java 数据处理
正则表达式替换技巧与实用案例分享
正则表达式替换技巧与实用案例分享
|
7月前
|
数据采集
正则表达式替换
正则表达式替换
|
数据采集 开发者
|
程序员
学好正则表达式,啥难匹配的内容都给我匹配上
学好正则表达式,啥难匹配的内容都给我匹配上
正则实现 20190723 20190724 20190725 改为 2019-07-23 2019-07-24 2019-07-25
正则实现 20190723 20190724 20190725 改为 2019-07-23 2019-07-24 2019-07-25
正则实现 20190723 20190724 20190725 改为 2019-07-23 2019-07-24 2019-07-25
|
人工智能 自然语言处理 机器人
匹配问答|学习笔记
快速学习匹配问答
150 0
匹配问答|学习笔记
C#编程-87:正则表达式替换
C#编程-87:正则表达式替换
106 0
C#编程-87:正则表达式替换
|
开发者 Python
正则查找相关的方法 | 学习笔记
快速学习 正则查找相关的方法