1.正則概念
1.正則表達(dá)式就是做字符串匹配一種工具巧婶,很多語(yǔ)言都支持正則語(yǔ)法。正則語(yǔ)法是通用的
2.python中通過(guò)re模塊中提供的方式來(lái)使用正則
2普通字符
普通字符在正則中代表字符本身壕翩, 例如, a, b, 1...等
3 . (匹配任意字符)
4 \w(匹配字母蛉迹、數(shù)字、下劃線)
一個(gè)\w只能匹配一個(gè)字符
注意: 這個(gè)不嚴(yán)謹(jǐn)放妈,還可以匹配中文等字符;
不能匹配ASCII碼表中除了字母數(shù)字下劃線以外的符號(hào)
5 \s(匹配空白字符)
空白字符:空格婿禽、\t、\n
一個(gè)\s只能匹配一個(gè)空字符
6 \d(匹配數(shù)字字符)
7 \W(匹配非數(shù)字大猛、字母扭倾、下劃線)
8\S(匹配非空白字符)
9\D(匹配非數(shù)字字符)
10 [] (匹配字符集中的一個(gè)字符)
a. [普通字符集] - 匹配字符集中的任意一個(gè)字符
b. [字符1-字符2] - 匹配字符1到字符2中的任意一個(gè)字符(要求字符1的編碼值小于字符2)
[0-9] - 匹配所有的數(shù)字
[a-z] - 匹配小寫字母
[A-Z] - 匹配大寫字母
[a-zA-Z] - 匹配所有的字母
[\da-zA-Z_] - 匹配字母數(shù)字下劃線
[\u4e00-\u9fa5] - 匹配所有的中文
注意: 一個(gè)[]只能匹配一個(gè)字符
11[^]
[^字符集] - 匹配不在字符集中任意一個(gè)字符
[^\u4e00-\u9fa5] - 匹配一個(gè)非中文字符
12\b(檢測(cè)單詞邊界)
\b - 檢查\b所在的位置是否是單詞邊界
單詞邊界 - 字符串開頭、字符串結(jié)尾挽绩、空白膛壹、標(biāo)點(diǎn)符號(hào)等
13^(檢測(cè)是否是字符串開頭)
14$(檢測(cè)是否是字符串結(jié)尾)
15轉(zhuǎn)義符號(hào):在有特殊功能、意義的符號(hào)前加'',讓這個(gè)正則符號(hào)變成普通符號(hào)
注意: 除了^放在[]開頭唉堪,和-放在兩個(gè)字符之間以外模聋, 其他單獨(dú)的特殊符號(hào),在[]沒(méi)有特殊功能都是表示字符本身
16*(匹配0次或多次)
字符* - 指定的字符出現(xiàn)0次或者多次
a* - 字符a匹配0次或者多次
\d* - 數(shù)字匹配0次或者多次
[a-z]* - 小寫字母匹配0次或者多次
17+(匹配1次或者多次)
18?(0次或1次)
19{}
{N} - 匹配N次
{M,N} - 匹配至少M(fèi)次唠亚,最多N次
{M,} - 匹配至少M(fèi)次
{,N} - 匹配最多N次
- == {0,}
- == {1,}
? == {0,1}
20非貪婪
1)貪婪 - 匹配次數(shù)不確定的時(shí)候盡可能多的匹配 (上面次數(shù)不確定的符號(hào)都是貪婪的)
2)非貪婪 - 匹配次數(shù)不確定的時(shí)候盡可能少的匹配 (上面次數(shù)不確定的符號(hào)后面加?就會(huì)變成非貪婪)
*? - 0次或多次, 盡可能少
+? - 1次或多次, 盡可能少
?? - 0次或1次, 盡可能少
{N,M}?
{M,}?
{,N}?
21()-分組
將部分正則作為一個(gè)整體
1.整體區(qū)分
re_str = r'(xxx|yyy)[A-Z]{2}[a-z]{2}\d{2}'
2.整體操作
re_str = r'(\d{2}[a-zA-Z]{2}){3}'
3.整體重復(fù)
\M - 重復(fù)前面第M個(gè)分組匹配到的內(nèi)容
22 | (分之)
正則1|正則2 - 先用正則1進(jìn)行匹配链方,如果匹配失敗再用正則2匹配(正則1和正則2中只要有一個(gè)匹配成功就成功,兩個(gè)失敗了才失斣钏选)
注意: 如果正則1匹配成功了祟蚀,不會(huì)再使用正則2去匹配