最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python全棧之路正則函數(shù)

 更新時間:2021年11月30日 14:50:35   作者:熬夜泡枸杞  
這篇文章主要為大家介紹了Python正則函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1. 反向引用_命名分組

# ### 反向引用
import re
strvar = "<div>明天又要休息了</div>"
obj = re.search("<(.*?)>(.*?)<(.*?)>",strvar)
print(obj)
# 獲取匹配到的內(nèi)容
res1 = obj.group()
print(res1)
# 獲取分組里的內(nèi)容
res2 = obj.groups()
print(res2)
# 反向引用的語法 \1把第一個括號里面匹配到的內(nèi)容在引用一次
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=組名) 引用之前組的名字,把該組名匹配到的內(nèi)容放到當前位置
"""
# 寫法一
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. 正則函數(shù)

# ### 正則函數(shù)
import re
# search   通過正則匹配出第一個對象返回,通過group取出對象中的值
strvar = "3+4 6*4"
obj = re.search(r"(\d+[+*]\d+)",strvar)
print(obj)
# 獲取匹配到的內(nèi)容
print(obj.group())
# 獲取分組當中的內(nèi)容 (返回元組)
print(obj.groups())
# match    驗證用戶輸入內(nèi)容 (了解)
"""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(正則,替換的字符,原字符串[,替換的次數(shù)])
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 匹配字符串中相應(yīng)內(nèi)容,返回迭代器
"""返回的是迭代器,迭代器中包含了對象 對象.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  指定一個統(tǒng)一的匹配規(guī)則
"""
正常情況下,正則表達式編譯一次,執(zhí)行一次
為了避免反復(fù)編譯,節(jié)省時間空間,可以使用compile統(tǒng)一規(guī)則
編譯一次,終身受益
"""
strvar = "asdfs234sdf234"
pattern = re.compile("\d+")
print("<===>")
obj = pattern.search(strvar)
print(obj.group())
lst = pattern.findall(strvar)
print(lst)
# 修飾符 
# re.I 使匹配對大小寫不敏感
strvar = "<h1>大標題</H1>"
pattern = re.compile("<h1>(.*?)</h1>" , 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 使 . 匹配包括換行在內(nèi)的所有字符
strvar = """
give
sdfsdfmefive
"""
# 多個修飾符一起使用通過|拼接
pattern = re.compile(".*?mefive" , flags = re.S|re.I|re.M )
obj = pattern.search(strvar)
print(obj.group())

小提示:

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

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • pyinstaller打包exe程序的步驟和添加依賴文件的實現(xiàn)

    pyinstaller打包exe程序的步驟和添加依賴文件的實現(xiàn)

    這篇文章主要介紹了pyinstaller打包exe程序的步驟和添加依賴文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python隊列Queue超詳細講解

    Python隊列Queue超詳細講解

    Queue是python標準庫中的線程安全的隊列(FIFO)實現(xiàn),提供了一個適用于多線程編程的先進先出的數(shù)據(jù)結(jié)構(gòu),即隊列,用來在生產(chǎn)者和消費者線程之間的信息傳遞,本文給大家講解Python隊列Queue的相關(guān)知識,需要的朋友參考下吧
    2023-04-04
  • 在雙python下設(shè)置python3為默認的方法

    在雙python下設(shè)置python3為默認的方法

    這篇文章主要介紹了如何在雙python下設(shè)置python3為默認,本文通過一個例子分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • python實現(xiàn)逢七拍腿小游戲的思路詳解

    python實現(xiàn)逢七拍腿小游戲的思路詳解

    這篇文章主要介紹了python實現(xiàn)逢七拍腿小游戲的思路,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 利用Python中的pandas庫對cdn日志進行分析詳解

    利用Python中的pandas庫對cdn日志進行分析詳解

    這篇文章主要介紹了利用Python中的pandas庫進行cdn日志分析的相關(guān)資料,文中分享了pandas對cdn日志分析的完整示例代碼,然后詳細介紹了關(guān)于pandas庫的相關(guān)內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Python使用asyncio標準庫對異步IO的支持

    Python使用asyncio標準庫對異步IO的支持

    Python中,所有程序的執(zhí)行都是單線程的,但可同時執(zhí)行多個任務(wù),不同的任務(wù)被時間循環(huán)(Event Loop)控制及調(diào)度,Asyncio是Python并發(fā)編程的一種實現(xiàn)方式;是Python 3.4版本引入的標準庫,直接內(nèi)置了對異步IO的支持
    2023-11-11
  • Python中numpy的np.percentile百分位函數(shù)舉例詳解

    Python中numpy的np.percentile百分位函數(shù)舉例詳解

    在python中計算一個多維數(shù)組的任意百分比分位數(shù),此處的百分位是從小到大排列,只需用np.percentile即可,這篇文章主要給大家介紹了關(guān)于Python中numpy的np.percentile百分位函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 最新評論

    轮台县| 高雄县| 徐汇区| 贵定县| 莆田市| 盖州市| 怀安县| 冕宁县| 库车县| 宜丰县| 宁远县| 大安市| 内黄县| 许昌市| 英超| 卓尼县| 孟州市| 聂荣县| 特克斯县| 杂多县| 嵊泗县| 东明县| 云安县| 沙湾县| 福泉市| 崇阳县| 兰考县| 高平市| 永寿县| 西乌珠穆沁旗| 营口市| 莎车县| 理塘县| 乐至县| 青冈县| 河西区| 伊川县| 洞头县| 融水| 长顺县| 封开县|