溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中正則表達式的示例分析

發布時間:2021-07-02 10:44:44 來源:億速云 閱讀:181 作者:小新 欄目:開發技術

這篇文章主要介紹Python中正則表達式的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

正則表達式是處理字符串的強大工具。作為一個概念而言,正則表達式對于Python來說并不是獨有的。但是,Python中的正則表達式在實際使用過程中還是有一些細小的差別。

(1)匹配1-100之間的數

import re 
 
s = '100'  # 1-100內的任意數字
ret = re.match(r'(100|[1-9]\d{0,1})$',s)
print(ret.group())

(100|[1-9]\d{0,1})$

100可以匹配100 | 或者匹配[1-9]中的一個數,然后后面\d是數字,后面的{0,1}匹配最多一個數字或沒有數字

[1-9]\d意思是只能是前面是1-9的任意數字主要是不包括0,否則01是不允許,后面是任意包括0。

(2)匹配座機號碼

010-67132692,其構造規則為[3位數字][-][8位數字]

或者

0516-8978981,其構造規則為[4位數字][-][7位數字]

import re 
 
s = "010-67132692"
ret = re.search(r'^\d{3,4}-\d{7,8}$' , s)
print(ret.group())

注意:print(ret.group(0)) 一樣的效果,python默認可以0,不用()也可以獲取,一般php與js中都是\1開始

(3)對輸入的qq號進行匹配(qq匹配規則:長度為5-10位,純數字組成,且不能以0開頭。)

import re 
 
s = "1101111123"
ret = re.match(r'[1-9]\d{4,9}$' , s)
if ret != None:
  print(ret.group())
else :
  print('匹配失敗!')

(4)查找字符串中有多少個af

import re 
s = "asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd"
 
ret = re.findall(r'(af)' , s)
print(len(ret))

(5)規則是按照空格出現一次或者多次切割

import re 
 
s = "zhangsan  lisi wangwu"
res = re.compile(r'\s+')
ret = res.split(s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(6)用正則\\切割

import re 
 
s = "c:\\abc\\a.txt"
res = re.compile(r'\\')
ret = res.split(s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(7)將連續5個以上數字替換成#

import re 
 
s = "wer8934605juo123wa89320571f"
res = re.compile(r'\d{5,}')
ret = res.sub('#' , s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(8)取出字符串中的所有字母

import re 
 
s = "abDEe23dJfd343dPOddfe4CdD5ccv!23rr"
res = re.compile(r'[a-zA-Z]+')
ret = res.findall(s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(9)找出以字母e結尾的單詞,忽略大小寫

import re 
 
s = 'THREE people at HERE do some THING'
res = re.compile(r'\w+e\b' , re.I)  #\b為邊界
ret = res.findall(s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(10)將多個重復字母替換成&

import re 
 
s = "cudddbhuuujdddcaa"
res = re.compile(r'([a-zA-Z])\1+')
ret = res.sub('&' , s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(11)將多個重復字母替換成一個字母(比如ddd替換成d)

import re 
 
s = "cudddbhuuujddd"
res = re.compile(r'([a-zA-Z])\1+')
ret = res.sub(r'\1',s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(12)獲取長度為3個字母的單詞

import re 
 
s = "min tian jiu yao fang jia le ,da jia"
ret = re.findall(r'\b\w{3}\b' , s)
print(ret)

效果圖:

Python中正則表達式的示例分析

(13)將字符串變成 '我要學編程'

import re
s = "我我...我我...我要..要要...要要...學學學...學學...編編編..編程..程.程...程...程"
res = re.sub(r'\W+','', s)
ret = re.sub(r'(.)\1+',r'\1',res)   
print(ret)

效果圖:

Python中正則表達式的示例分析

(14)去掉div和b標簽

結果:正則<span>表達式</span>練習

import re 
 
s = "<div class='a'>正則<span>表達式</span><b style='color:red'>練習</b></div>"
ret = re.sub(r'(</?div.*?>|</?b.*?>)','',s) 
print(ret)

效果圖:

Python中正則表達式的示例分析

(15)找出每行中只有3個數字的字符串

import re 
 
s = '''121fefe
3qsqse2
ded6d32
aaaaa1a
1234adc
'''
ret = re.findall(r'^\D*\d\D*\d\D*\d\D*$' , s ,re.M)
print(ret)

效果圖:

Python中正則表達式的示例分析

 以下是補充

收集一些常用的python正則練習

# 匹配出0-99之間的數字
print("---匹配出0-99之間的數字---")
ret = re.match(r"^[1-9]?[0-9]$","77")
print(ret.group())
 
# 8到20位的密碼,可以是??寫英?字?、數字、下劃線
print("---,8到20位的密碼,可以是??寫英?字?、數字、下劃線---")
ret = re.match("[\w_]{8,20}","1123dasf1")
print(ret.group())
 
# 匹配出163的郵箱地址,且@符號之前有4到 20位,例如hello@163.com
print("---匹配出163的郵箱地址,且@符號之前有4到 20位,例如hello@163.com---")
ret = re.match("[\w_]{4,20}@163\.com","evan_qb@163.com")
print(ret.group())
 
print("---b---")
ret = re.match(r".*\b163\b","evan_qb@163.com")
print(ret.group())
 
# 匹配1-100之間的數
print("---匹配1-100之間的數---")
ret = re.match("[1-9]?\d$|100","100")
print(ret.group())
 
# 匹配163、126、qq郵箱
print("---匹配163、126、qq郵箱---")
ret = re.match("[\w_]{4,20}@(163|126|qq)\.com","123342@126.com")
print(ret.group())
 
# 匹配<html>hello world</html>
print("---匹配<html>hello world</html>---")
ret = re.match(r"<([a-zA-Z]*)>.*</\1>","<html>hello world</html>")
print(ret.group())
 
# 第一種:匹配出<html><h2>www.itcast.cn</h2></html>
print("---第一種:匹配出<html><h2>www.qblank.cn</h2></html>---")
ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>","<html><h2>www.itcast.cn</h2></html>")
print(ret.group())
 
# 第二種: 匹配出<html><h2>www.qblank.cn</h2></html>
print("---第二種: 匹配出<html><h2>www.qblank.cn</h2></html>")
ret = re.match("<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>","<html><h2>www.qblank.cn</h2></html>")
print(ret.group())
 
# ******re模塊的高級用法*****
# 使用search匹配文章的閱讀的次數
print("---匹配文章的閱讀的次數---")
ret = re.search(r"\d+","閱讀次數為 9999")
print(ret.group())
 
# 統計出python、c、c++相應?章閱讀的次數
print("---統計出python、c、c++相應?章閱讀的次數---")
ret = re.findall(r"\d+","python = 2342,c = 7980,java = 9999")
print(ret)
 
# 將匹配到的閱讀次數加1
print("---將匹配到的閱讀次數加1---")
ret = re.sub(r"\d+","999","python = 997")
print(ret)
 
# <div>
#  <p>崗位職責:</p>
#  <p>完成推薦算法、數據統計、接?、后臺等服務器端相關?作</p>
#  <p><br></p> <p>必備要求:</p> <p>良好的?我驅動?和職業素養,?作積極主動、結果導向</p>
#  <p> <br></p> <p>技術要求:</p>
#  <p>1、?年以上	Python	開發經驗,掌握?向對象分析和設計,了解設計模式</p >
#  <p>2、掌握HTTP協議,熟悉MVC、MVVM等概念以及相關WEB開發框架</p>
#  <p>3、掌握關系數據庫開發設計,掌握	SQL,熟練使?	MySQL/PostgreSQL	中 的?種<br></p>
#  <p>4、掌握NoSQL、MQ,熟練使?對應技術解決?案</p>
#  <p>5、熟悉	Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
#  <p> <br></p> <p>加分項:</p>
#  <p>?數據,數理統計,機器學習,sklearn,?性能,?并發。</p>
# </div>
data = """
<div>
  <p>崗位職責:</p>
  <p>完成推薦算法、數據統計、接?、后臺等服務器端相關?作</p>
  <p><br></p> <p>必備要求:</p> <p>良好的?我驅動?和職業素養,?作積極主動、結果導向</p>  <p> <br></p> <p>技術要求:</p>
  <p>1、?年以上	Python	開發經驗,掌握?向對象分析和設計,了解設計模式</p >
  <p>2、掌握HTTP協議,熟悉MVC、MVVM等概念以及相關WEB開發框架</p>
  <p>3、掌握關系數據庫開發設計,掌握	SQL,熟練使?	MySQL/PostgreSQL	中 的?種<br></p>
  <p>4、掌握NoSQL、MQ,熟練使?對應技術解決?案</p>
  <p>5、熟悉	Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
  <p> <br></p> <p>加分項:</p>
  <p>?數據,數理統計,機器學習,sklearn,?性能,?并發。</p>
</div>
"""
print("---爬取就業信息網址---")
# 方法一:關閉貪婪模式
print("---方法一---")
ret = re.sub(r"<.+?>","",data)
print(ret)
# 方法二:
print("---方法二---")
ret = re.sub(r"</?\w+>","",data)
print(ret)
 
# 切割字符串“info:xiaoZhang	33	shandong”
print("---切割字符串“info:xiaoZhang	33	shandong”---")
ret = re.split(r":|","切割字符串info:xiaoZhang	33	shandong")
print(ret)
 
# This	is	a	number	234-235-22-423
data = "This	is	a	number	234-235-22-423"
print("---貪婪和非貪婪---")
# 貪婪
ret = re.match(".+(\d+-\d+-\d+-\d+)",data)
print(ret.group(1))
# 非貪婪
ret = re.match(".+?(\d+-\d+-\d+-\d+)",data)
print(ret.group(1))
 
 
# 提取圖片的url
data = """
  <img data-original="https://rpic.douyucdn.cn/appCovers/2016/1
  1/13/1213973_201611131917_small.jpg"	
  src="https://rpic.douyuc dn.cn/appCovers/2016/11/13/1213973_201611131917_small.jpg"
  >
"""
print("---提取圖片的url")
ret = re.search(r"https.+?\.jpg",data)
print(ret.group())
 
data = """
  http://www.interoem.com/messageinfo.asp?id=35 
  http://3995503.com/class/class09/news_show.asp?id=14 
  http://lib.wzmc.edu.cn/news/onews.asp?id=769 
  http://www.zy-ls.com/alfx.asp?newsid=377&id=6 
  http://www.fincm.com/newslist.asp?id=415
"""
# 去掉后綴
print("---去掉后綴---")
ret = re.sub(r"(http://.+?/).*", lambda x: x.group(1),data)
print(ret)
 
# 找出所有單詞
data = "hello	world	ha	ha"
print("---找出所有單詞---")
print("--方法一--")
ret = re.split(r" +",data)
print(ret)
print("--方法二--")
ret = re.findall(r"\b[a-zA-Z]+\b",data)
print(ret)

以上是“Python中正則表達式的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女