日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Python正則表達式re.sub()用法詳解_python

作者:IT之一小佬 ? 更新時間: 2022-11-18 編程語言

源代碼、參數(shù)及其意義:

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()函數(shù)共有5個參數(shù):

  • pattern:表示正則中的模式字符串;
  • repl:表示要替換的字符串(即匹配到pattern后替換為repl),也可以是個函數(shù);
  • string:表示要被處理(查找替換)的原始字符串;
  • count:可選參數(shù),表示要替換的最大次數(shù),而且必須是非負整數(shù),該參數(shù)默認為0,即所有的匹配都會替換;
  • flags:可選參數(shù),表示編譯時用的匹配模式(如忽略大小寫、多行模式等),數(shù)字形式,默認為0。

re.sub():匹配替換為選擇的文本。

1.匹配單個數(shù)字或字母

示例代碼:【只匹配單一數(shù)字】

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

運行結果:

re.sub(r'[0-9]', '*', s)?這句話表示只匹配單一數(shù)字,并將每一個數(shù)字替換為一個星號?。

示例代碼:【只匹配單一字母】

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) 這句話則表示只匹配單一字母,并將每一個字母替換為一個星號 。

示例代碼:【匹配單一數(shù)字和字母】

import re
 
s = "您好,歡迎來到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的郵箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"
 
#  匹配單一數(shù)字和字母
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) 表示只匹配單一數(shù)字和大寫字母,并將每一個數(shù)字和大寫字母替換為一個星號 。
re.sub(r'[0-9a-z]', '*', s) 表示只匹配單一數(shù)字和小寫字母,并將每一個數(shù)字和小寫字母替換為一個星號 。
re.sub(r'[0-9A-Za-z]', '*', s) 表示只匹配單一數(shù)字和字母,并將每一個數(shù)字和字母替換為一個星號 。

2.匹配多個數(shù)字或字母

注意:這里的所說的多個指的是大于等于一個。

示例代碼:【匹配多個數(shù)字】

import re
 
s = "您好,歡迎來到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的郵箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"
 
#  匹配多個數(shù)字
ret = re.sub(r'[0-9]+', "*", s)
print(ret)

運行結果:

re.sub(r'[0-9]+', '*', s)?表示匹配多個連續(xù)的數(shù)字,并將多個連續(xù)的數(shù)字替換為一個星號?。

示例代碼:【匹配多個字母】

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) 表示匹配多個連續(xù)的小寫字母,并將多個連續(xù)的小寫字母替換為一個星號 。
  • re.sub(r'[A-Z]+', '*', s) 表示匹配多個連續(xù)的大寫字母,并將多個連續(xù)的大寫字母替換為一個星號 。
  • re.sub(r'[A-Za-z]+', '*', s) 表示匹配多個連續(xù)的字母,并將多個連續(xù)的字母替換為一個星號 。

示例代碼:【匹配多個連續(xù)數(shù)字和字母】

import re
 
s = "您好,歡迎來到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的郵箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"
 
#  匹配多個數(shù)字和字母
ret = re.sub(r'[0-9a-zA-Z]+', "*", s)
print(ret)

運行結果:

re.sub(r'[0-9A-Za-z]+', '*', s)?表示匹配多個連續(xù)的數(shù)字和字母,并將多個連續(xù)的數(shù)字、連續(xù)的字母、連續(xù)的數(shù)字和字母替換為一個星號?。

3.匹配其他

示例代碼:【匹配非數(shù)字】

import re
 
s = "您好,歡迎來到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的郵箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"
 
#  匹配非數(shù)字
ret = re.sub(r'[^0-9]', "*", s)
print(ret)
ret = re.sub(r'[^0-9]+', "*", s)
print(ret)

運行結果:

  • re.sub(r'[^0-9]', '*', s)?表示匹配單個非數(shù)字,并將單個非數(shù)字替換為一個星號?。
  • re.sub(r'[^0-9]+', '*', s)?表示匹配多個連續(xù)的非數(shù)字,并將多個連續(xù)的非數(shù)字替換為一個星號?。

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

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) 表示匹配多個連續(xù)的非小寫字母,并將多個連續(xù)的非小寫字母替換為一個星號 。
  • re.sub(r'[^A-Z]+', '*', s) 表示匹配多個連續(xù)的非大寫字母,并將多個連續(xù)的非大寫字母替換為一個星號 。
  • re.sub(r'[^A-Za-z]+', '*', s)表示匹配多個連續(xù)的非字母,并將多個連續(xù)的非字母替換為一個星號 。

示例代碼:【匹配非數(shù)字和非字母】

import re
 
s = "您好,歡迎來到我的博客:https://blog.csdn.net/weixin_44799217,,,###,,,我的郵箱是:535646343@qq.com. Today is 2021/12/21. It is a wonderful DAY!"
 
#  匹配非數(shù)字和非字母
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) 表示匹配單個非數(shù)字和非字母,并將單個非數(shù)字和非字母替換為一個星號 。
  • re.sub(r'[^0-9A-Za-z]+', '*', s) 表示匹配多個連續(xù)的非數(shù)字和非字母,并將多個連續(xù)的非數(shù)字和非字母替換為一個星號 。

示例代碼:【匹配固定形式】【只保留字母和空格,將 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參數(shù)控制替換的次數(shù)
print(ret2)

運行結果:

總結?

原文鏈接:https://blog.csdn.net/weixin_44799217/article/details/115100715

欄目分類
最近更新