re是python中的正規表示式模組,正則也是每個人程式設計之路上必備的基礎技能。這部落格希望即便從來沒接觸過的人看了也會使用正規表示式字元
含義.匹配除了換行符外的任何字元。(可以用re.dotall來設定匹配任何字元,包括換行符)
丨a丨b ,表示正規表示式匹配a或者b
^匹配輸入字串開始的位置,如果設定了re.multiline標誌,也可以匹配換行符後的位置
$匹配輸入字串結束的位置,如果設定了re.multiline標誌,也可以匹配換行符前的位置
|將乙個普通字元變成特殊字元
*匹配前面的子表示式0次或者多次
+匹配前面的子表示式1次或者多次
?匹配前面的子表示式1次或者0次
匹配所包含的任意乙個字元
\a匹配輸入字串的開始位置
\z匹配輸入字串的結束位置
\b匹配乙個單詞邊界
\b匹配乙個非單詞邊界,正好與\b相反
\d匹配數字[0-9]
\d與\d相反匹配所有非[0-9]的數字
\s或者\s
前者匹配空白字元,後者匹配非空白字元
\w或者\w
前者匹配單詞字元與數字,下劃線等價於[a-za-z0-9],後者與其相反
從字串中匹配出相應的字串行,返回值是list,元素是匹配到的每個字串行。
import re
#從乙個字串中匹配出所有的數字
str = 'aaqtas123nvj654yyyajkv'
result1 = re.findall('\d+',str)
print(result1)
輸出:['123', '654']
findall()還有第三個引數可以使用,並且這第三個引數使用「|」分開使其多個一起生效。
str2 = 'aatgjyo123liaa'
result2 = re.findall('aa',str2)
print(result2)
輸出:
str2 = 'aatgjyo123liaa'
result2 = re.findall('aa',str2,re.i)
print(result2)
輸出:['aa', 'aa']
從上面的例子中我們可以看到當沒加re.i的時候因為str中的aa是大寫的,但是匹配規則是小寫的aa,從而導致無法匹配成功,但是我們把標誌位re.i加上就匹配出來了,說明該標誌位可以無視大小寫匹配!
re中的標誌位還有很多哦,這裡直接列個表好了。
標誌位含義
re.i
匹配時候無視大小寫
re.s
使『.』可以匹配出包括換行符在內的內容
re.m
可以進行多行匹配,就是前面特殊字元中第三四個裡面說的re.multiline
re.l
使預定字元類 \w \w \b \b \s \s 取決於當前區域設定
re.u
使預定字元類 \w \w \b \b \s \s \d \d 取決於unicode定義的字元屬性
re.u
詳細模式。這個模式下正規表示式可以是多行,忽略空白字元,並可以加入注釋。
str3 = 'qwd\nad'
result3 = re.findall('wd.',str3)
print(result3)
輸出:
str3 = 'qwd\nad'
result3 = re.findall('wd.',str3,re.i)
print(result3)
輸出:
str3 = 'qwd\nad'
result3 = re.findall('wd.',str3,re.i|re.s)
print(result3)
輸出:['wd\n']
從上面的例子我們可以看到,第二個我加上了無視大小寫也輸出了空,是因為後面\n被視為換行符,所以』.'沒有匹配到東西,無法輸出,加上之後無視了大小寫並且將\n輸出了。 re 正規表示式模組
import re 預定義字符集 d 數字 0 9 d 非數字 d s 空白字元 空格 t r n f v s 非空白字元 s w 單詞字元 a za z0 9 w 非單詞字元 w 匹配數量 匹配除換行符以外的任何單個字元 匹配前乙個字元0或無限次 盡可能多的匹配 盡可能少的進行匹配前邊的正規表示式...
正規表示式re模組
正規表示式re模組 編譯正規表示式模式,返回乙個物件的模式。可以把那些常用的正規表示式編譯成正規表示式物件,這樣可以提高一點效率。1 compile 格式 re.compile pattern,flags 0 pattern 編譯時用的表示式字串。flags 編譯標誌位,用於修改正規表示式的匹配方式...
re模組正規表示式
正規表示式 1 舉例 re校驗 import re while true phone number input 請輸入手機號碼 strip 需求 11位 開頭13 14 15 19 引數1 正規表示式 引數2 需要過濾的字串 代表 開頭 代表 結束 代表 或 13 14 可以獲取乙個值,判斷是否是1...