摘要:正則模塊使語言擁有全部的正則表達式功能。函數(shù)根據(jù)一個模式字符串和可選的標(biāo)志參數(shù)生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。表示或者匹配項未找到匹配項匹配項未找到匹配項
正則
re = regular experssion
re 模塊使 Python 語言擁有全部的正則表達式功能。
compile 函數(shù)根據(jù)一個模式字符串和可選的標(biāo)志參數(shù)生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。
作用: 對于字符串進行處理, 會檢查這個字符串內(nèi)容是否與你寫的正則表達式匹配
如果匹配, 拿出匹配的內(nèi)容; 如果不匹配, 忽略不匹配內(nèi)容;
編寫正則的規(guī)則
pattern 匹配的正則表達式 string 要匹配的字符串三種查找方法
1). findall
import re str = "hello sheen,hello cute." pattern_1 = r"hello" pattern_2 = r"sheen" print(re.findall(pattern_1,str)) #["hello", "hello"] print(re.findall(pattern_2,str)) #["sheen"]
2).match
match嘗試從字符串的起始位置開始匹配,
如果起始位置沒有匹配成功, 返回一個None;
如果起始位置匹配成功, 返回一個對象;
import re str = "hello sheen,hello cute." pattern_1 = r"hello" pattern_2 = r"sheen" print(re.match(pattern_1,str)) #<_sre.SRE_Match object; span=(0, 5), match="hello"> print(re.match(pattern_1,str).group()) #返回match匹配的字符串內(nèi)容,hello print(re.match(pattern_2,str)) #None
3).search
search會掃描整個字符串, 只返回第一個匹配成功的內(nèi)容;
如果能找到, 返回一個對象, 通過group方法獲取對應(yīng)的字符串;
import re str = "hello sheen,hello cute." pattern_1 = r"hello" pattern_2 = r"sheen" print(re.search(pattern_1,str)) #<_sre.SRE_Match object; span=(0, 5), match="hello"> print(re.search(pattern_1,str).group()) #hello print(re.search(pattern_2,str)) #<_sre.SRE_Match object; span=(6, 11), match="sheen"> print(re.search(pattern_2,str).group()) #sheen特殊字符類
.: 匹配除了 之外的任意字符; [. ] d: digit--(數(shù)字), 匹配一個數(shù)字字符, 等價于[0-9] D: 匹配一個非數(shù)字字符, 等價于[^0-9] s: space(廣義的空格: 空格, , , ), 匹配單個任何的空白字符; S: 匹配除了單個任何的空白字符; w: 字母數(shù)字或者下劃線, [a-zA-Z0-9_] W: 除了字母數(shù)字或者下劃線, [^a-zA-Z0-9_]
import re # . print(re.findall(r".","sheen star ")) #["s", "h", "e", "e", "n", "s", "t", "a", "r"] #d#D print(re.findall(r"d","當(dāng)前聲望30")) #["3", "0"] print(re.findall(r"D","當(dāng)前聲望30")) #["當(dāng)", "前", "聲", "望"] #s#S print(re.findall(r"s", " 當(dāng)前 聲望 為30")) #[" ", " ", " "] print(re.findall(r"S", " 當(dāng)前 聲望 為30")) #["當(dāng)", "前", "聲", "望", "為", "3", "0"] #w#W print(re.findall(r"w","lucky超可愛!!")) #["l", "u", "c", "k", "y", "超", "可", "愛"] print(re.findall(r"W","lucky超可愛!!")) #["!", "!"]指定字符出現(xiàn)次數(shù)
匹配字符出現(xiàn)次數(shù):
*: 代表前一個字符出現(xiàn)0次或者無限次; d*, .* +: 代表前一個字符出現(xiàn)一次或者無限次; d+ ?: 代表前一個字符出現(xiàn)1次或者0次; 假設(shè)某些字符可省略, 也可以不省略的時候使用
第二種方式:
{m}: 前一個字符出現(xiàn)m次; {m,}: 前一個字符至少出現(xiàn)m次; * == {0,}; + ==={1,} {m,n}: 前一個字符出現(xiàn)m次到n次; ? === {0,1}
import re #* 代表前一個字符出現(xiàn)0次或者無限次 print(re.findall(r"s*","sheenstar")) #["s", "", "", "", "", "s", "", "", "", ""] print(re.findall(r"s*","hello")) #["", "", "", "", "", ""] #+ 代表前一個字符出現(xiàn)一次或者無限次 print(re.findall(r"s+","sheenstar")) #["s", "s"] print(re.findall(r"s+","hello")) #[] # ? 代表前一個字符出現(xiàn)1次或者0次 print(re.findall(r"188-?", "188 6543")) #["188"] print(re.findall(r"188-?", "188-6543")) #["188-"] print(re.findall(r"188-?", "148-6543")) #[] # 匹配電話號碼 pattern = r"d{3}[s-]?d{4}[s-]?d{4}" print(re.findall(pattern,"188 0123 4567")) #["188 0123 4567"] print(re.findall(pattern,"188-0123-4567")) #["188-0123-4567"] print(re.findall(pattern,"18801234567")) #["188-0123-4567"]練習(xí)--匹配IP
可以從網(wǎng)上搜索正則表達式生成器,使用別人寫好的規(guī)則,自己測試。
import re # | 表示或者 pattern = r"(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d)$" print(re.findall(pattern,"172.25.254.34")) #[("172", "25", "254", "34")] matchObj_1 = re.match(pattern,"172.25.254.34") if matchObj_1: print("匹配項:",matchObj_1.group()) #172.25.254.34 else: print("未找到匹配項") matchObj_2 = re.match(pattern,"172.25.254.343") if matchObj_2: print("匹配項:",matchObj_2.group()) else: print("未找到匹配項")
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44827.html
摘要:特別是可以訪問請求提交的表單數(shù)據(jù)。表單的代碼生成和驗證提交的表單數(shù)據(jù)就是兩個很好的例子。優(yōu)勢擴展使得處理表單能獲得更愉快的體驗。設(shè)計了表單庫來使可以更加簡便地管理操作表單數(shù)據(jù)。 1. 為什么使用Flask-WTF? request對象公開了所有客戶端發(fā)送的請求信息。特別是request.form可以訪問POST請求提交的表單數(shù)據(jù)。 盡管Flask的request對象提供的支持足以處理w...
摘要:兩者相同的地方是都可以將一個普通函數(shù)變成視圖函數(shù)。不同的是,使用裝飾器定義路由,而使用正則表達式定義路由。中間什么都沒有,表示這個正則匹配的是根目錄,。最后修改的網(wǎng)頁顯示如圖項目框架圖 Django添加路由 與flask一樣,django也需要使用路由將URL與服務(wù)端要執(zhí)行的代碼關(guān)聯(lián)。 兩者相同的地方是都可以將一個普通函數(shù)變成視圖函數(shù)。不同的是,flask使用裝飾器@app.route...
摘要:定義了所有元素的對象和屬性,以及訪問它們的方法。換言之,是關(guān)于如何獲取修改添加或刪除元素的標(biāo)準。根據(jù)標(biāo)準,中所有內(nèi)容都是節(jié)點。好比我有兩個下拉列表,第一列表是選擇省份,那么我選擇某一個省份,那么另一個列表也會對應(yīng)顯示該省份的城市。 什么是DOM? DOM (Document Object Model) 譯為文檔對象模型,是 HTML 和 XML 文檔的編程接口。HTML DOM 定義了...
閱讀 2100·2023-04-26 00:09
閱讀 3121·2021-09-26 10:12
閱讀 3490·2019-08-30 15:44
閱讀 2866·2019-08-30 13:47
閱讀 927·2019-08-23 17:56
閱讀 3230·2019-08-23 15:31
閱讀 480·2019-08-23 13:47
閱讀 2516·2019-08-23 11:56