廖雪峰python教程學習 正規表示式小結

2021-10-07 02:34:09 字數 2262 閱讀 2195

廖雪峰老師的python教程

正規表示式的功能十分強大,用法也十分的多,在廖雪峰老師的python教程中也只是點到為止,僅做了解作用,更深入還希望查閱工具。

正規表示式也是用字串表示的,有字元表示字元的方法

\d匹配乙個數字

\w匹配乙個數字或字母

.匹配任何字元

\s匹配乙個空格(包括tab)

'\w\w\s\d.'可以匹配'py 3!'

*匹配包括0個的任意個字元

+表示至少1個字元

?表示0或1個字元

表示n個字元

表示n-m個字元

例如:\d\-\d

\d代表著可以識別3個字元

\d代表著可以識別3-8個字元

\-可以轉義 \ 字元

所以這段就可以識別'010-123456'這種字串

精確的匹配,可以用劃定範圍:

[a-za-z\_][0-9a-za-z\_]限定前面乙個大小寫字母或_ 加上後面乙個最長20字元的可以包括大小寫字母和_的字串

a|b代表a或b

^為行開頭 例如^\d為行開頭必須為數字

$為行末尾 例如\d$為行末尾必須為數字

使用r轉義,可以直接將字串變為正規表示式字串

例如r'python'的正規表示式字串就是'python'

引入正規表示式,可以使用re模組

import re

match()判斷是否匹配,匹配返回乙個match物件,不匹配返回none

常用形式

test =

'使用者輸入的字串'

if re.match(r'正規表示式'

, test)

:print

('ok'

)else

:print

('failed'

)

正規表示式中使用spilt()切割更加方便

re.split(r'[\s\,\;]+'

,'a,b;; c d')[

'a',

'b',

'c',

'd']

例如在這中間,就可以按照\s(空格) \,(逗號) ; (分號)切割

正規表示式還可以進行分組操作

m = re.match(r'^(\d)-(\d)$'

,'010-12345'

)m.group(0)

'010-12345'

m.group(1)

'010'

m.group(2)

'12345'

如例,使用^(\d)-(\d)$將字串分為前後兩組,前面固定3個字元,後面3-8個字元

其中group(0)固定為原字串

group(1)與group(2)是前後分割的字串

正則匹配預設為貪婪匹配,如:

re.match(r'^(\d+)(0*)$'

,'102300'

).groups()(

'102300',''

)

在前面的分組中,規定了數字型別,但沒有限定個數,會預設匹配盡量多的數字,所以後面的一組就沒有機會匹配

re.match(r'^(\d+?)(0*)$'

,'102300'

).groups()(

'1023'

,'00'

)

在此情況下,使用\d+?令其進行非貪婪匹配(盡可能少的匹配),所以後字串盡可能的多匹配0,出現了下面的情況。

正規表示式在基於python的爬蟲中利用較多,之後需要深度的學習。

python廖雪峰教程 學習筆記

如何用字元來描述字元 d匹配數字 digit w匹配字母或數字 word s可以匹配空格 space 表示任意個字元,表示至少乙個字元 表示0個或1個字元,表示n個字元,表示n m個字元 可以匹配任意字元 例如 kongxiangyu w如何做到更精確的匹配?規定數字 字母或者下劃線 0 9a za...

廖雪峰python教程學習筆記(函式)

1.max函式可以接收任意多個引數,並返回最大的那個 2.函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個別名 3.在python中,定義乙個函式要用def語句,依次寫出函式名 括號 括號中的引數和冒號,然後在縮排塊中編寫函式體,函式的返回值用return...

廖雪峰python教程學習 sorted小結

廖雪峰老師的python教程 我們常用類似於氣泡排序 快速排序等進行數字上的排序,在python中,我們可以用sorted函式對字串與字典中的內容進行比較。sorted 36,5,12,9 21 排序後 21,12,5,9,36 此外,sorted函式可以通過設定key的形式限定排序方式,例如 so...