Python正则表达式re.sub()用法详解

作者:IT之一小佬 时间:2022-05-29 14:30:01 

源代码、参数及其意义:

def sub(pattern, repl, string, count=0, flags=0):
   """Return the string obtained by replacing the leftmost
   non-overlapping occurrences of the pattern in string by the
   replacement repl.  repl can be either a string or a callable;
   if a string, backslash escapes in it are processed.  If it is
   a callable, it's passed the Match object and must return
   a replacement string to be used."""
   return _compile(pattern, flags).sub(repl, string, count)

从源码中看出re.sub()函数共有5个参数:

  • pattern:表示正则中的模式字符串;

  • repl:表示要替换的字符串(即匹配到pattern后替换为repl),也可以是个函数;

  • string:表示要被处理(查找替换)的原始字符串;

  • count:可选参数,表示要替换的最大次数,而且必须是非负整数,该参数默认为0,即所有的匹配都会替换;

  • flags:可选参数,表示编译时用的匹配模式(如忽略大小写、多行模式等),数字形式,默认为0。

re.sub():匹配替换为选择的文本。

1.匹配单个数字或字母

示例代码:【只匹配单一数字】

import re
s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"
#  只匹配单一数字
ret = re.sub(r'[0-9]', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

re.sub(r'[0-9]', '*', s) 这句话表示只匹配单一数字,并将每一个数字替换为一个星号 。

示例代码:【只匹配单一字母】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  只匹配单一字母
ret = re.sub(r'[a-z]', "*", s)
print(ret)
ret = re.sub(r'[A-Z]', "*", s)
print(ret)
ret = re.sub(r'[a-zA-Z]', "*", s)
print(ret)
ret = re.sub(r'[A-z]', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

 re.sub(r'[a-z]', '*', s) 表示只匹配单一小写字母,并将每一个小写字母替换为一个星号 。re.sub(r'[A-Z]', '*', s) 表示只匹配单一大写字母,并将每一个大写字母替换为一个星号 。re.sub(r'[A-Za-z]', '*', s) 这句话则表示只匹配单一字母,并将每一个字母替换为一个星号 。

示例代码:【匹配单一数字和字母】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配单一数字和字母
ret = re.sub(r'[0-9a-z]', "*", s)
print(ret)
ret = re.sub(r'[0-9A-Z]', "*", s)
print(ret)
ret = re.sub(r'[0-9a-zA-Z]', "*", s)
print(ret)
ret = re.sub(r'[0-9A-z]', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

re.sub(r'[0-9A-Z]', '*', s) 表示只匹配单一数字和大写字母,并将每一个数字和大写字母替换为一个星号 。
re.sub(r'[0-9a-z]', '*', s) 表示只匹配单一数字和小写字母,并将每一个数字和小写字母替换为一个星号 。
re.sub(r'[0-9A-Za-z]', '*', s) 表示只匹配单一数字和字母,并将每一个数字和字母替换为一个星号 。

2.匹配多个数字或字母

注意:这里的所说的多个指的是大于等于一个。

示例代码:【匹配多个数字】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配多个数字
ret = re.sub(r'[0-9]+', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

re.sub(r'[0-9]+', '*', s) 表示匹配多个连续的数字,并将多个连续的数字替换为一个星号 。

示例代码:【匹配多个字母】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配多个字母
ret = re.sub(r'[a-z]+', "*", s)
print(ret)
ret = re.sub(r'[A-Z]+', "*", s)
print(ret)
ret = re.sub(r'[a-zA-Z]+', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

  • re.sub(r'[a-z]+', '*', s) 表示匹配多个连续的小写字母,并将多个连续的小写字母替换为一个星号 。

  • re.sub(r'[A-Z]+', '*', s) 表示匹配多个连续的大写字母,并将多个连续的大写字母替换为一个星号 。

  • re.sub(r'[A-Za-z]+', '*', s) 表示匹配多个连续的字母,并将多个连续的字母替换为一个星号 。

示例代码:【匹配多个连续数字和字母】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配多个数字和字母
ret = re.sub(r'[0-9a-zA-Z]+', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

re.sub(r'[0-9A-Za-z]+', '*', s) 表示匹配多个连续的数字和字母,并将多个连续的数字、连续的字母、连续的数字和字母替换为一个星号 。

3.匹配其他

示例代码:【匹配非数字】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配非数字
ret = re.sub(r'[^0-9]', "*", s)
print(ret)
ret = re.sub(r'[^0-9]+', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

  • re.sub(r'[^0-9]', '*', s) 表示匹配单个非数字,并将单个非数字替换为一个星号 。

  • re.sub(r'[^0-9]+', '*', s) 表示匹配多个连续的非数字,并将多个连续的非数字替换为一个星号 。

示例代码:【匹配非字母】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配非字母
ret = re.sub(r'[^a-z]', "*", s)
print(ret)
ret = re.sub(r'[^A-Z]', "*", s)
print(ret)
ret = re.sub(r'[^a-zA-Z]', "*", s)
print(ret)
ret = re.sub(r'[^a-z]+', "*", s)
print(ret)
ret = re.sub(r'[^A-Z]+', "*", s)
print(ret)
ret = re.sub(r'[^a-zA-Z]+', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

  • re.sub(r'[^a-z]', '*', s) 表示匹配单个非小写字母,并将单个非小写字母替换为一个星号 。

  • re.sub(r'[^A-Z]', '*', s) 表示匹配单个非大写字母,并将单个非大写字母替换为一个星号 。

  • re.sub(r'[^A-Za-z]', '*', s) 表示匹配单个非字母,并将单个非字母替换为一个星号 。

  • re.sub(r'[^a-z]+', '*', s) 表示匹配多个连续的非小写字母,并将多个连续的非小写字母替换为一个星号 。

  • re.sub(r'[^A-Z]+', '*', s) 表示匹配多个连续的非大写字母,并将多个连续的非大写字母替换为一个星号 。

  • re.sub(r'[^A-Za-z]+', '*', s)表示匹配多个连续的非字母,并将多个连续的非字母替换为一个星号 。

示例代码:【匹配非数字和非字母】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配非数字和非字母
ret = re.sub(r'[^0-9a-zA-Z]', "*", s)
print(ret)
ret = re.sub(r'[^0-9a-zA-Z]+', "*", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

  • re.sub(r'[^0-9A-Za-z]', '*', s) 表示匹配单个非数字和非字母,并将单个非数字和非字母替换为一个星号 。

  • re.sub(r'[^0-9A-Za-z]+', '*', s) 表示匹配多个连续的非数字和非字母,并将多个连续的非数字和非字母替换为一个星号 。

示例代码:【匹配固定形式】【只保留字母和空格,将 repl 设置为空字符即可】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  匹配固定形式
ret = re.sub(r'[^a-z ]', " ", s)
print(ret)
ret = re.sub(r'[^a-z ]+', " ", s)
print(ret)
ret = re.sub(r'[^a-zA-Z ]', " ", s)
print(ret)
ret = re.sub(r'[^a-zA-Z ]+', " ", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

示例代码:【去除以 @ 开头的英文单词】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  去除以 @ 开头的英文单词
ret = re.sub(r'@[a-zA-Z ]+', " ", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

示例代码:【去除原始字符串中的URL】

import re

s = "您好,欢迎来到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的邮箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"

#  d.去除原始字符串中的URL
ret = re.sub(r'https[:.]+\S+', "", s)
print(ret)

运行结果:

Python正则表达式re.sub()用法详解

示例代码:【匹配到的所有空格使用“+”来替换】

import re

s = "Long live the people's Republic of China"
ret = re.sub("\s", "+", s)
print(ret)

ret2 = re.sub("\s", "+", s, 3)  # 通过count参数控制替换的次数
print(ret2)

运行结果:

Python正则表达式re.sub()用法详解

总结 

来源:https://blog.csdn.net/weixin_44799217/article/details/115100715

标签:python,re.sub,正则表达式
0
投稿

猜你喜欢

  • CSS Hack 汇总快查

    2007-11-06 11:48:00
  • 童年回忆录之python版4399吃豆豆小游戏

    2021-04-30 18:52:44
  • 利用phpmyadmin设置mysql的权限方法

    2023-11-24 02:12:46
  • python中join与os.path.join()函数实例详解

    2023-08-23 19:20:51
  • opencv 图像滤波(均值,方框,高斯,中值)

    2022-12-04 23:41:07
  • python爬虫爬取网页数据并解析数据

    2022-03-03 06:25:02
  • Python中的基本数据类型讲解

    2021-04-29 07:07:24
  • ASP连接MSSQL2005 数据库

    2009-03-08 19:20:00
  • asp判断ip及ip段范围的一组函数小记

    2008-12-09 18:23:00
  • python 批量将中文名转换为拼音

    2023-06-14 21:16:22
  • JavaScript创始人Brendan Eich访谈录

    2008-09-16 12:01:00
  • Bootstrap显示与隐藏简单实现代码

    2023-08-24 17:30:54
  • 一些关于asp 购物车的想法

    2011-04-10 11:10:00
  • 一文带你学会使用PHP接口

    2023-06-07 18:40:13
  • PHP PDOStatement::rowCount讲解

    2023-06-06 12:24:04
  • 下一站:HandlerSocket!

    2011-04-11 09:02:00
  • Python3列表内置方法大全及示例代码小结

    2022-09-23 01:39:21
  • php filter协议使用方法

    2023-05-29 19:36:40
  • Python学习之不同数据类型间的转换总结

    2021-10-04 06:06:57
  • 详解PHP设计模式之桥接模式

    2023-05-30 10:29:02
  • asp之家 网络编程 m.aspxhome.com