15 正規表示式

2021-10-14 05:42:50 字數 3819 閱讀 6259

正規表示式,就是從一段字串中提取需要的字串

需要引入的模組:re,常用的函式:re.findall(引數1,引數2,引數3)

引數1,表示用什麼規則進行提取

引數2,表示從**提取。返回值是乙個列表

引數3,re.i 表示不區分大小寫,re.s 匹配多行中符合條件的值

1、. 萬用字元,表示匹配某個字元後面的任意乙個字元

str1 =

'aab1abb2ab'

print

(re.findall(

'ab.'

,str1)

)#會找出ab後有任意乙個字元的字元

==>

['ab1'

,'abb'

]

2、? 萬用字元,表示匹配某個字元後面的0個或1個字元

str1 =

'aab1abbbdef'

print

(re.findall(

'ab?'

,str1)

)#會找a後有0個、1個b的字元

==>

['a'

,'ab'

,'ab'

]

3、* 萬用字元,表示匹配某個字元後面的若干個字元,也包括0個的情況

str1 =

'aab1abb2abbb3'

print

(re.findall(

'ab*'

,str1)

)#會找a後有0個、1個、多個b的字元

==>

['a'

,'ab'

,'abb'

,'abbb'

]str2=

'ab1abc2abcc3bc4'

print

(re.findall(

'abc*'

,str2)

)#會找ab後有0個、1個、多個c的字元

==>

['ab'

,'abc'

,'abcc'

]

4、+ 萬用字元,表示匹配某個字元後面的1個或多個字元,不包括0個情況

str1 =

'a1ab2abbb3'

print

(re.findall(

'ab+'

,str1)

)#找a後有1個、多個b的字元

==>

['ab'

,'abbb'

]

5、()表示只顯示匹配到的值

str1 =

'a1ab2abbb3'

print

(re.findall(

'a(b+)'

,str1))==

>

['b'

,'bbb'

]

6、.*? 提取字串兩端之間的內容

特點:懶惰匹配,盡可能少的匹配,取前不取後

str1 =

'我是鹹魚呀'

print

(re.findall(

'是(.*?)呀'

,str1)

)str2 =

'鹹魚是我'

print

(re.findall(

'(.*?)是'

,str2)

)str3 =

'我是鹹魚'

print

(re.findall(

'是(.*?)'

,str3)

)#彰顯取前不取後的特點

==>

['鹹魚']==

>

['鹹魚']==

>[''

]

7、.* 提取字串兩端之間的內容

特點:貪婪匹配,盡可能多的匹配,前後都會匹配

str1 =

'我是鹹魚呀'

print

(re.findall(

'是(.*)呀'

,str1)

)str2 =

'鹹魚是我'

print

(re.findall(

'(.*)是'

,str2)

)str3 =

'我是鹹魚'

print

(re.findall(

'是(.*)'

,str3)

)# 與.*?匹配的區別之處

==>

['鹹魚']==

>

['鹹魚']==

>

['鹹魚'

]

8、\w 表示匹配字母、數字、下劃線,n表示匹配多少位

str1 =

'1@ab#$2c_3__!@#'

print

(re.findall(

'\w'

,str1))==

>

['ab'

,'2c'

,'_3'

,'__'

]

9、\w 表示匹配非字母、非數字、非下劃線,n表示匹配多少位

str1 =

'1@ab#$2c_3__!@#'

print

(re.findall(

'\w'

,str1))==

>

['#$'

,'!@'

]

10、\s 匹配空格、\t 、\n

str1=

'''@我是_

\t 鹹魚@

'''print

(re.findall(

'\s'

,str1))==

>

['\n'

,'\t'

,' '

,'\n'

]

11、\s 匹配非空格、非\t 、非\n

str1=

'''@我是_

\t 鹹魚@

'''print

(re.findall(

'\s'

,str1))[

'@',

'我',

'是',

'_',

'鹹',

'魚',

'@']

12、^ 以什麼開頭 $以什麼結尾

list1 =

['a'

,'1ab'

,'abc'

,'1a'

,'1abc'

]for one in list1:

if re.findall(

'^ab'

,one)

:print

('以ab開頭'

)elif re.findall(

'ab$'

,one)

:print

('以ab結尾'

)else

:print

('無關')==

>無關

==>以ab結尾

==>以ab開頭

==>無關

==>無關

15 正規表示式(下)

正則符號補充 表示式描述 n 是非負整數。正好匹配 n 次。n 和 m 是非負整數,其中 n m。匹配至少 n 次,至多 m 次。xyz 字符集。匹配包含的任一字元。xyz 反向字符集。匹配未包含的任何字元。字元補充 字元描述 b匹配乙個字邊界,即字與空格間的位置。例如,er b 匹配 never ...

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

day15正規表示式

什麼時異常捕獲 程式報錯出現了異常 程式異常的後果 程式會直接結束,不會往後面執行 異常捕獲 目的 當程式出先異常的時候,程式不崩潰繼續執行後面的 什麼時候需要捕獲 知道某個地方出現異常,但是 沒有問題 使用者的不當操作 這個時候需要異常捕獲 語法1 捕獲所有異常型別 try 段1 except 段...