Python 程式設計筆記10

2021-09-05 09:50:43 字數 2833 閱讀 5389

符號含義

\s匹配乙個空格、空白符

\d匹配乙個數字

\w匹配乙個字母或數字

.匹配任意字元

*匹配任意個字元(包括0個)

+至少乙個字元

?表示0個或1個字元

表示n個字元

表示n~m個字元

注意:可以使用多者的組合形式。

eg:\d\s+\d

\d表示匹配 3 個數字,例如』010』;

\s 可以匹配乙個空格(也包括 tab 等空白符),所以\s+表示至少有乙個空格,例如匹配』 ', 』 '等;

\d表示 3-8 個數字,例如』1234567』。

表示範圍,eg:

a|b 匹配 a 或 b

^ 表示行的開頭,^\d 表示必須以數字開頭

$ 表示行的結束,\d$ 表示必須以數字結束

包含所有正規表示式的功能,需特別注意 \ 轉義 或 使用r字首(可以不考慮轉義的問題,推薦)

match()方法 判斷是否匹配,如果匹配成功,返回乙個 match 物件,否則返回 none。

import re

print

(re.match(r'^\d\-\d$'

,'010-12345'))

print

(re.match(r'^\d\-\d$'

,'010 12345'

))

結果輸出

<_sre.sre_match object; span=(0, 9), match='010-12345'>

none

常用判斷方法

test =

'使用者輸入的字串'

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

, test)

:print

('ok'

)else

:print

('failed'

)

利用正規表示式將不規範的輸入轉化為正確的陣列

print

(re.split(r'\s+'

,'a b c'))

print

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

,'a,b, c d'))

print

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

,'a,b;; c d'

))

輸出結果

['a', 'b', 'c']

['a', 'b', 'c', 'd']

['a', 'b', 'c', 'd']

用於提取子串,用 () 表示要提取的分組。

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

,'010-12345'

)print

(m)print

(m.group(0)

)# 第乙個匹配的子串,永遠是原始字串

print

(m.group(1)

)# 第二個匹配的子串

print

(m.group(2)

)# 第三個匹配的子串

t ='19:05:30'

m = re.match(r'(0[0-9]|1[0-9]|2[0-3])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$'

, t)

print

(m.groups(

))

結果輸出

<_sre.sre_match object; span=(0, 9), match='010-12345'>

010-12345

01012345

('19', '05', '30')

正則匹配預設是貪婪匹配,即匹配盡可能多的字元。

## 貪婪匹配

print

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

,'102300'

).groups())

## 非貪婪匹配——新增?

print

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

,'102300'

).groups(

))

結果輸出

('102300', '')

('1023', '00')

當使用正規表示式時,re模組內部會做兩個事:

預編譯正規表示式(若該正則表達要重複使用幾千次)

編譯後生成regular expression 物件,可以呼叫對應的方法實現字串匹配。

# 編譯正規表示式

re_telephone = re.

compile

(r'^(\d)-(\d)$'

)# 使用

print

(re_telephone.match(

'010-123456'

).groups())

print

(re_telephone.match(

'010-8086'

).groups(

))

結果輸出

('010', '123456')

('010', '8086')

python 學習筆記(10)

字串方法 find join lower replace split strip translate find 可以在乙個較長的字串中查詢字串,返回值是這個字串所在的位置的最左端索引,找不到返回 1 例 with a moo moo here,and a moo moo there find moo...

python學習筆記(10)

多台是指對不同型別的變數進行相同操作,根據物件 或類 不同而表現出不同的行為。1 多型的方法是多型,屬性沒有多型。2 多型的存在有2個必要條件 繼承,方法重寫。在python中所有的 雙下劃包起來的方法,都稱為 魔方方法 作用是構造出優美的 將複雜的邏輯封裝成簡單的方法。運算子過載 運算子過載 cl...

python程式設計筆記

1 建立資料夾 os.mkdir和os.makedirs的區別 if not os.path.exists d hello test os.makedirs d hello test 連同中間目錄也會建立 os.mkdir d hello test 不會建立中間目錄 如果d hello目錄不存在 則...