re正则匹配替换字符串(sub和subn)
2021/9/12 23:10:40
本文主要是介绍re正则匹配替换字符串(sub和subn),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
python 里面可以用 replace 实现简单的替换字符串操作,如果要实现复杂一点的替换字符串操作,需用到正则表达式。
re.sub用于替换字符串中匹配项,返回一个替换后的字符串,subn方法与sub()相同, 但返回一个元组, 其中包含新字符串和替换次数。
sub介绍
Python 的 re 模块提供了re.sub用于替换字符串中的匹配项,sub是substitute表示替换。
使用语法
sub(pattern, repl, string, count=0, flags=0)
- pattern:该参数表示正则中的模式字符串;
- repl:repl可以是字符串,也可以是可调用的函数对象;如果是字符串,则处理其中的反斜杠转义。如果它是可调用的函数对象,则传递match对象,并且必须返回要使用的替换字符串
- string:该参数表示要被处理(查找替换)的原始字符串;
- count:可选参数,表示是要替换的最大次数,而且必须是非负整数,该参数默认为0,即所有的匹配都会被替换;
- flags:可选参数,表示编译时用的匹配模式(如忽略大小写、多行模式等),数字形式,默认为0。
sub示例-repl传字符串
将字符串中的hello替换成数字123
import re #替换s中的hello为123, s = "hello,world!!!" print(re.sub(r'hello', "123", s)) #123,world!!!
把字符串中的连续数字替换成hello
import re # 把字符串中的连续数字替换成hello s = "the number 0746-8798098" print(re.sub(r'\d+', "hello", s)) # the number hello-hello
替换时间格式 01/11/2021 替换成 2021/01/11
import re # 替换时间格式 01/11/2021 替换成 2021/01/11 s = "today is 09-12-2021" day = re.sub(r'(\d{2})-(\d{2})-(\d{4})', r'\3-\2-\1', s) print(day) # today is 2021-12-09 # 也可以用g<3>-g<2>-g<1> day2 = re.sub(r'(\d{2})-(\d{2})-(\d{4})', r'g<3>-g<2>-g<1>', s) print(day) # today is 2021-12-09
\3
和 \g<3>
指代的的都是前面匹配的第3个分组
count替换次数
sub 加 count 参数可以控制要替换的次数,而且必须是非负整数,该参数默认为0,表示所有的匹配都会被替换;
import re # 替换字符串中的空格为123,只替换一次 s = "We are happy" print(re.sub(" ", "123", s, count=1)) # We123are happy
subn方法使用
subn方法与sub()相同, 但返回一个元组, 其中包含新字符串和替换次数。
# 替换字符串中的空格为123 s = "We are happy" print(re.subn(" ", "123", s)) #('We123are123happy', 2)
这篇关于re正则匹配替换字符串(sub和subn)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-11正则表达式教程:初学者指南
- 2024-09-11正则表达式学习:入门指南与实践技巧
- 2024-08-15正则表达式入门:基础教程与实践指南
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解