python核心程式設計筆記 正規表示式(一)

2021-09-03 08:25:13 字數 2378 閱讀 6756

. 即所謂的「元字元」,這些字元給予正規表示式強大的功能和靈活性。以下是常見的符號和字元:

. 表示擇一匹配的符號是「|」,表示從多個模式中選一種的操作,用於分割不同的正規表示式。例如:正規表示式模式為:at|home,它匹配的字串at或者home。

. 點號「.」用來匹配除了換行符\n以外的任何字元,無論字母、數字、空格、可列印字元、不可列印字元,還是乙個符號,使用「.」都能匹配。例如:正規表示式模式為:f.o,可匹配的字元可以是:foo,f9o,f*o等。

值得一提的是如何匹配點號本身呢?需要使用轉義:「\.」。

. 字元「^」或者特殊字元「\a」表示匹配以某單詞為起始的字串,字元「$」或者特殊字元「\z」表示匹配以某單詞作為結尾的字串,例如:

正規表示式模式

匹配的字串

^from

任何以from作為起始的字串

from$

任何以from作為結尾的字串

. 特殊字元「\b」和「\b」可以用來匹配字元邊界。兩者的區別在於前者用於指定這個單詞是作為字串開頭或結尾,後者只需要字串包含指定的單詞就行,例如:

正規表示式模式

匹配的字串

\bthe

任何以the開始的字串

\bthe\b

僅僅匹配the

\bthe

任何包含the但不以the作為起始的字串

. 有時希望匹配某些特定的字串,就像是將匹配的範圍進行更精確的縮小了,通過「」來做到這點:

正規表示式模式

匹配的字串

b[aeiu]t

bat、bet、bit、but

[ae][23][dp]

乙個包含三個字元的字串,第乙個字元可能是a或e,第二個可能是2或3,第三個可能是d或p

. 除了單字元外,還可以匹配指定的字元範圍,在方括號中通過「-」來實現操作,另外,如果左方括號後跟的是「^」,則表示不匹配括號中給定的字元,例如:

正規表示式模式

匹配的字串

b[0-5]

b0、b1、b2、b3、b4、b5

[^aeiou]

匹配非母音字元

星號操作符「*」將用來匹配其左邊的正規表示式出現零次或多次的情況(在計算機程式語言和編譯原理中,該操作被稱為kleene閉包)。加號操作符「+」將匹配一次或多次出現的正規表示式(也叫做正閉包操作符)。問號操作符「?」將匹配出現一次或零次的正規表示式

還有大括號操作符「{}」,中是乙個或用逗號隔開的兩個數值,表示前面的正規表示式出現的次數或出現的次數範圍。

值得注意的是如果問號操作符緊跟在任何使用閉合操作符的匹配後面,它將盡可能要求正規表示式引擎匹配盡可能少的次數。

正規表示式模式

匹配的字串

[dn]ot?

表示t出現一次或零次,可能匹配do、no、dot、not

[0-9]

匹配15到17個數字

]+>

匹配全部有效的(和無效的)html標籤

. 與使用「0-9」這種形式相比較,可以簡單的使用「d」表示匹配任何十進位制數字。另乙個特殊字元「\w」能夠表示全部字母數字的字符集,相當於[a-za-z0-9],「\s」可以用來表示空格字元,這些特殊字元的大寫版本表示不匹配。例如:

正規表示式模式

匹配的字串

\w+-\d+

字串和連字元和數字,例如:asda-1234

[a-za-z]\w*

第乙個字元是字母,其餘字元(如果存在)是字母或數字

\w+@\w+.com

簡單的電子郵件位址

. 當時用正規表示式時,一對圓括號可以實現以下任意乙個(或者兩個)功能:

1.對正規表示式進行分組;

2.匹配子組。

分組的乙個原因是可能我想對整個表示式使用重複操作符(*+?)而不是單個字元;另乙個原因很好的例項是:當有兩個不同的正規表示式而且想用他們來比較同乙個字串時(這個原因沒懂)。

匹配子組的作用很大,比如之前所寫的:\w+-\d+這個匹配模式,如果加上括號:(\w+)-(\d+),那麼就能夠分別訪問第一部分的字元和第二部分的數字。

. 它們都是以問號開始:「(?..)」,通常用於在判斷之前提供標記,實現乙個前視(或後視)匹配,或是條件檢查。另外雖然使用了圓括號,但是只有(?p)表述乙個分組匹配,其餘都不建立分組

python核心程式設計筆記

1 賦值並不是直接將乙個值賦給乙個變數,儘管你可能根據其它語言程式設計經驗認為應該如此。在python 語言中,物件是通過引用傳遞的。在賦值時,不管這個物件是新建立的,還是乙個已經存在的,都是將該物件的引用 並不是值 賦值給變數。一切皆為物件。python 的賦值語句不會返回值,但可以鏈式賦值。x ...

Python核心程式設計 筆記

第13章 物件導向程式設計 object是所有類之母。如果你的類沒有繼承任何其它父類,object將作為預設的父類。類既可 很簡單,也可以很複雜,這全憑你的需要。最簡單的情況,類僅用作命名空間,意味著,你把資料儲存在變數中,對他們按命名空間進行分級,使他們處於相同的關係空間中。類成員可以動態新增,這...

《python核心程式設計》筆記

建立檔案 maketextfile.py 指令碼提醒使用者輸入乙個尚不存在的檔名,然後由使用者輸入檔案每一行,最後將所有文字寫入文字檔案 1 usr bin env python 2 3 maketextfile.py creat text file 4 5 import os 6 ls os.li...