一刁赖,正則表達式
fullmatch(正則表達式摄闸,字符串) - 查看字符串和正則表達式是否匹配懂诗,如果不匹配結果式None 正則表達式:r'正則語法'
1.什么是正則表達式
正則表達式是處理字符串的工具唆香,通過不同的正則符號來描述字符串的規(guī)則
2.正則符號(正則表達式的語法)
1)普通字符:除了在正則中有特殊功能和特殊意義以外的字符都算普通字符
普通字符代碼本身
匹配一個字符串有三個字符串。分別是'a','b','c'
2) . - 匹配任意一個字符
一個點只能匹配一個字符
3) \w - 匹配一個數(shù)字滑沧,字母或者_(在ASCII碼表)
一個\w只能匹配一個字符
4)\d - 匹配任意一個數(shù)字字符
匹配一個長度是5的字符串并村,前面兩個字符是任意數(shù)字,后面三個是任意字符
5)\s - 匹配任意一個空白字符
空白字符包括:空格字符滓技,換行字符哩牍,制表符。令漂。膝昆。
6) \大寫字母
\D - 匹配除了數(shù)字字符以外的任意字符(匹配一個非數(shù)字字符)
\S - 匹配一個非空白字符
7) [字符集] - 匹配字符集出現(xiàn)的任意一個字符
注意:一個[]只能匹配一個字符
a.[多個字符] - 例如:[abc] -匹配'abc'中任意一個字符
b.
[1-9] - 匹配1到9中的任意一個字符(字符編碼值遞增)
[a-z] - 匹配任意一個小寫字母
[A-Z] - 匹配任意一個大寫字母
[a-zA-Z] - 匹配任意一個字母
[a-zA-Z\d] - 匹配一個數(shù)字,字母
[\t\n] - 匹配任意一個空白符
[\u4e00-\u9fa5] - 匹配任意一個中文字符
匹配一個長度是4的字符串叠必,第一個字符是1或者3或者7荚孵,后面是abc
re_str=r'[137]abc'
print(fullmatch(re_str,'1abc'))
8) [^字符集] - 匹配不在字符集中的任意一個字符
[^abv] - 匹配任意一個不是a,b纬朝,c的字符
[^2-8] - 匹配任意一個不是2到8的字符
[^\u4e00-\u9fa5] - 匹配任意一個非中文的字符
3.檢查符
所有的檢測符號都不會影響字符串的長度
1)\b - 檢查是否是單詞邊界
單詞邊界 - 能夠?qū)蓚€單詞隔開并且不會產(chǎn)生歧義的任意符號:空白字符收叶,標點符號,字符串開頭和字符串結尾
匹配規(guī)則:先去掉\b對字符串進行匹配共苛,如果匹配成功再檢查\b所在的位置是否是單詞邊界
- ^ - 檢查^所在的位置是否是字符串開頭
注意:這兒的^是[]外面的
3)所在的位置是否式字符串結尾
4. 控制次數(shù)的符號
1.* - 匹配0次或者多次
2.+ - 匹配1次或者多次
3.判没? - 匹配0次或1次
4.{}
1) {N} - 匹配N次
2) {M,N} - 匹配M到N次(至少M次,最多N)
3) {M隅茎,} - 匹配至少M次澄峰,123a{3}:123aaaa
4) {,N} - 最多N次
5.貪婪和非貪婪
在匹配次數(shù)不確定的時候,會出現(xiàn)貪婪和非貪婪兩種情況辟犀;默認情況都是貪婪俏竞。
什么是貪婪:在能夠匹配成功的前提下,匹配次數(shù)盡可能的多
什么是非貪婪:在能夠匹配成功的前提下堂竟,匹配次數(shù)盡可能少魂毁;(在匹配次數(shù)后面加?)
7.分支
- |
正則1|正則2 - 先讓正則1去匹配跃捣,如果匹配成功就成功漱牵;匹配失敗再讓正則2去匹配
(正則1和正則2中只要有一個能匹配成功就行)
8.分組
1 ( ) - 將括號里面的內(nèi)容作為一個整體
1) 整體操作
r'(\d\d|[A-Z]{2})abc' - 匹配一個字符串后面是abc,前面是兩個數(shù)字獲或者兩個大寫字母
r'([a-z]\d){3}' - a8n7j8
2)分組
a.分組截取:方便后面分段或者分情況去不同的匹配結果
b.分組重復:在正則中用\X來重復前面第X個分組匹配到的內(nèi)容
注意:\X的前面必須有這個分組
9.轉(zhuǎn)義符號
1.加
在正則中有特殊功能和特殊意義的符號前加\疚漆,讓這個符號的特殊功能和意義消失
2.加[]
在[]中有特殊意義的符號:a.^放在最開頭 b.-放在兩個字符之間
其他符號:. + ? * $,這個單獨的符號在[]中都表示這個符號本身
二酣胀,re模塊
re模塊是python提供的刁赦,專門針對正則表達式應用的相關函數(shù)
1.compile(正則表達式) -> 將正則表達式轉(zhuǎn)換成正則對象
2.字符串匹配
fullmatch(正則表達式,字符串) - 讓正則表達式和字符串完全匹配
match(正則表達式闻镶,字符串) - 匹配字符串開頭
以上兩個方法的結果:匹配失敗結果式None甚脉,匹配成功會返回匹配對象
1)匹配對象
a.獲取匹配到的字符串
匹配對象.group() - 獲取整個正則表達式匹配到的字符串,結果是字符串
匹配對象.group(N) - 獲取整個正則表達式中第N個分組匹配到的字符串
b.獲取匹配到的字符串在原字符串中的位置信息
匹配對象.span() - > 返回匹配結果在原字符串中的下邊范圍:[開始下標铆农,結束下標)
匹配對象.span(N - > 返回第N個分組匹配到的結果在原字符串中的范圍
c.獲取原字符串
匹配對象.string
3.查找
1)search(正則表達式牺氨,字符串) - 在字符串中查找第一個滿足正則表達式的字串,如果找到了結果是匹配對象墩剖,找不到結果是None
2)findall(正則表達式猴凹,字符串) - 獲取字符串中所有滿足正則表達式的字串;返回值是一個列表
注意:如果正則表達式中有分組岭皂,列表中的匹配結果只會去分組匹配到的內(nèi)容
3)finditer(正則表達式郊霎,字符串) - 獲取字符串中所有滿足正則表達式的子串;返回值是一個迭代器爷绘,元素是匹配對象
4.切割
split(正則表達式书劝,字符串) - 將字符串滿足正則表達式的子串作為切割點對字符串進行切割;返回一個字符串列表
5.替換
sub(正則表達式土至,字符串1购对,字符串2)- 將字符串2中所有滿足正則表達式的字串都替換成字符串1,返回新的字符串