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

目录
  • 1.匹配单个数字或字母
  • 2.匹配多个数字或字母
  • 3.匹配其他
  • 总结

源代码、参数及其意义:

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)

运行结果:

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)

运行结果:

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)

运行结果:

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)

运行结果:

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)

运行结果:

  • 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)

运行结果:

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)

运行结果:

  • 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)

运行结果:

  • 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)

运行结果:

  • 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)

运行结果:

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

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)

运行结果:

示例代码:【去除原始字符串中的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)

运行结果:

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

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()用法详解的文章就介绍到这了,更多相关Python re.sub()用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 正则表达式 re.match/re.search/re.sub的使用解析

    From Python正则表达式 re.match(pattern, string, flags=0) 尝试从字符串起始位置匹配一个模式:如果不是起始位置匹配成功,则 re.match() 返回none. 匹配成功,re.match() 返回一个匹配的对象,否则返回None. pattern - 匹配的正则表达式 string - 要匹配的字符串 flags - 标志位,控制正则表达式的匹配方式,如,是否区分大小写,多行匹配等. e.g. #!/usr/bin/python # -*- codi

  • python字符串替换re.sub()实例解析

    这篇文章主要介绍了python字符串替换re.sub()实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 re.sub(pattern, repl, string, count=0, flags=0) pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改.\1 代表第一个分组 repl是将会被替换的值,repl可以是字符串也可以是一个方法.如果是一个字符串,反斜杠会被处理为逃逸字符,如\n会被替换

  • Python正则替换字符串函数re.sub用法示例

    本文实例讲述了Python正则替换字符串函数re.sub用法.分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它替换成自己想要的字符串的方法 re.sub 函数进行以正则表达式为基础的替换工作 下面是一段示例源码 #!/usr/bin/env python #encoding: utf-8 import re url = 'https://113.215.20.136:9011/113.215.6.77/c3

  • Python re.sub 反向引用的实现

    目录 match 分组 re.sub 匹配和替换 反向引用 参考 re 模块是 Python 标准库中提供的用于处理正则表达式的模块,利用 re 模块可以方便的利用正则表达式实现字符串中的匹配.替换等操作 match 分组 Python re 模块中提供了 match 函数,用来匹配字符串中指定的正则表达式规则.例如,如果想匹配到 "Isaac Newton, physicist" 中的 Isaac Newton,则可以使用正则表达式 \w+ \w+ ,运行结果如下: >>

  • python字符串替换re.sub()方法解析

    pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改.\1 代表第一个分组 repl是将会被替换的值,repl可以是字符串也可以是一个方法.如果是一个字符串,反斜杠会被处理为逃逸字符,如\n会被替换为换行,等等.repl如果是一个function,每一个被匹配到的字段串执行替换函数. \g<1> 代表前面pattern里面第一个分组,可以简写为\1,\g<0>代表前面pattern匹配到的所有字符串. count是pattern被替换的最大

  • 对python 中re.sub,replace(),strip()的区别详解

    1.strip(): str.strip([chars]);去除字符串前面和后面的所有设置的字符串,默认为空格 chars -- 移除字符串头尾指定的字符序列. st = " hello " st = st.strip() print(st+"end") 输出: 如果设置了字符序列的话,那么它会删除,字符串前后出现的所有序列中有的字符.但不会清除空格. st = "hello" st = st.strip('h,o,e') print(st) 因

  • 对python数据清洗容易遇到的函数-re.sub bytes string详解

    re.sub 功能,比replace强大的替换函数,将正则表达式匹配上的模块替换成repl re.sub(pattern, repl, string, count=0, flags=0) 返回最左边正则表达式限定的被repl代替的字符串,如果正则表达式没有匹配上,则字符串不做修改. \n is converted to a single newline character, \r is converted to a carriage return, and so forth. Unknown e

  • python re.sub()替换正则的匹配内容方法

    如下所示: import re c = re.compile(r'\d') s = 'you1are2welcome' # 用指定的内容,替换正则匹配的内容,也可以指定替换次数 ret = c.sub(' ', s, 1) print(ret) # 处理函数接收一个参数(每次的匹配结果) def deal(s): return str(int(s.group()) * 2) # 可以认为干预替换过程,传递一个函数即可 ret = re.sub(r'\d', deal, 'you1are2welc

  • python正则表达式re.sub各个参数的超详细讲解

    目录 一.re.sub(pattern, repl, string, count=0, flags=0) 二.参数讲解 1.pattern参数 2.repl参数 2.1.repl是字符串 2.2.repl是函数 3.string参数 4.count参数 5.flags参数 5.1.IGNORECASE(简写I) 5.2.LOCALE(简写L) 5.3.MULTILINE(简写M) 5.4.DOTALL(简写S) 5.5.VERBOSE(简写X) 补充:repl为函数时的用法 总结 一.re.su

  • python 正则表达式 re.sub & re.subn

    python正则表达式模块简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式.Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影. 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.使用这个小型语言

随机推荐