91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Python正則函數怎么使用

發布時間:2021-11-30 17:25:01 來源:億速云 閱讀:115 作者:iii 欄目:開發技術

這篇文章主要介紹“Python正則函數怎么使用”,在日常操作中,相信很多人在Python正則函數怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python正則函數怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1. 反向引用_命名分組

# ### 反向引用
import re
strvar = "<div>明天又要休息了</div>"
obj = re.search("<(.*?)>(.*?)<(.*?)>",strvar)
print(obj)
# 獲取匹配到的內容
res1 = obj.group()
print(res1)
# 獲取分組里的內容
res2 = obj.groups()
print(res2)
# 反向引用的語法 \1把第一個括號里面匹配到的內容在引用一次
obj = re.search(r"<(.*?)>(.*?)</\1>",strvar)
print(obj)
print(obj.group())
print(obj.groups())
strvar = " z3d4pzd a1b2cab "
obj = re.search(r"(.*?)\d(.*?)\d(.*?)\1\2",strvar)
print(obj)
print(obj.group())
print(obj.groups())
# ### 命名分組
"""
3) (?P<組名>正則表達式) 給這個組起一個名字
4) (?P=組名) 引用之前組的名字,把該組名匹配到的內容放到當前位置
"""
# 寫法一
strvar = " z3d4pzd a1b2cab "
obj = re.search(r"(?P<tag1>.*?)\d(?P<tag2>.*?)\d(?P<tag3>.*?)\1\2",strvar)
print(obj)
print(obj.group())
# 寫法二
strvar = " z3d4pzd a1b2cab "
obj = re.search(r"(?P<tag1>.*?)\d(?P<tag2>.*?)\d(?P<tag3>.*?)(?P=tag1)(?P=tag2)",strvar)
print(obj)
print(obj.group())

2. 正則函數

# ### 正則函數
import re
# search   通過正則匹配出第一個對象返回,通過group取出對象中的值
strvar = "3+4 6*4"
obj = re.search(r"(\d+[+*]\d+)",strvar)
print(obj)
# 獲取匹配到的內容
print(obj.group())
# 獲取分組當中的內容 (返回元組)
print(obj.groups())
# match    驗證用戶輸入內容 (了解)
"""search在正則表達式的前面加上^ 等價于 match ,其他用法上一模一樣"""
strvar = "a17366668888"
strvar = "17366668888"
# obj = re.search(r"^\d+",strvar)
# obj = re.match(r"\d+",strvar)
# print(obj.group())
print(obj)
# split    切割
strvar = "alex|wusir_xboyww@risky"
lst = re.split("[|_@]",strvar)
print(lst)
strvar = "alex2341273894wusir234234xboyww11111risky"
lst = re.split("\d+",strvar)
print(lst)
# sub      替換 
strvar = "alex|wusir_xboyww@risky"
"""
strvar = strvar.replace("|","&")
strvar = strvar.replace("_","&")
strvar = strvar.replace("@","&")
print(strvar)
"""
# sub(正則,替換的字符,原字符串[,替換的次數])
res = re.sub("[|_@]","&",strvar)
res = re.sub("[|_@]","&",strvar,1)
print(res)
# subn     替換  (用法上與sub相同,只是返回值不同)
res = re.subn("[|_@]","&",strvar)
res = re.subn("[|_@]","&",strvar,2)
print(res) 
# res = re.sub("[|_@]","&",strvar)
# ('alex&wusir&xboyww@risky', 2)
# finditer 匹配字符串中相應內容,返回迭代器
"""返回的是迭代器,迭代器中包含了對象 對象.group來獲取匹配到的值"""
from collections import Iterator, Iterable
strvar = "sdf23647fdgdfg()*()*23423423"
it = re.finditer("\d+",strvar)
print(isinstance(it,Iterator))
for obj in it:
	print(obj.group())
# compile  指定一個統一的匹配規則
"""
正常情況下,正則表達式編譯一次,執行一次
為了避免反復編譯,節省時間空間,可以使用compile統一規則
編譯一次,終身受益
"""
strvar = "asdfs234sdf234"
pattern = re.compile("\d+")
print("<===>")
obj = pattern.search(strvar)
print(obj.group())
lst = pattern.findall(strvar)
print(lst)
# 修飾符 
# re.I 使匹配對大小寫不敏感
strvar = "<h2>大標題</H1>"
pattern = re.compile("<h2>(.*?)</h2>" , flags=re.I)
obj = pattern.search(strvar)
print(obj.group())
# re.M 使每一行都能夠單獨匹配(多行匹配),影響 ^ 和 $
"""單行獨立匹配,而不是整體匹配"""
strvar = """
<p>111</p>
<a>222</a>
<strong>333</strong>
"""
pattern = re.compile("^<.*?>(?:.*?)<.*?>$" , flags=re.M)
lst = pattern.findall(strvar)
print(lst)
# re.S 使 . 匹配包括換行在內的所有字符
strvar = """
give
sdfsdfmefive
"""
# 多個修飾符一起使用通過|拼接
pattern = re.compile(".*?mefive" , flags = re.S|re.I|re.M )
obj = pattern.search(strvar)
print(obj.group())

小提示:

爬蟲爬數據的時候用finditer,數據太大,用迭代器存
strvar = """
<p>111</p>
<a>222</a>
<strong>333</strong>
"""
pattern = re.compile("^<.*?>(?:.*?)<.*?>$")
lst = pattern.findall(strvar)
print(lst) # 這里的結果為[] 因為.不匹配換行符,所以不會返回結果
pattern = re.compile("^<.*?>(?:.*?)<.*?>$",flags=re.M) 這里就是
一行的一行的匹配了
不會用for i in找思路 
不會用.*?找思路

到此,關于“Python正則函數怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

巴楚县| 二连浩特市| 广安市| 扎鲁特旗| 山西省| 个旧市| 惠水县| 柳州市| 东城区| 财经| 象州县| 孟州市| 庆云县| 大石桥市| 永昌县| 新津县| 中阳县| 望城县| 鞍山市| 拉萨市| 扎兰屯市| 浦县| 夏河县| 博客| 池州市| 枣庄市| 长垣县| 宾阳县| 通许县| 将乐县| 三明市| 扬州市| 合阳县| 太仓市| 沧州市| 太保市| 兴海县| 象州县| 唐山市| 海丰县| 牡丹江市|