Python合集之Python正規表示式(二)

2022-06-16 09:24:09 字數 1294 閱讀 6440

在上一節中我們了解到了python正規表示式中的行定位符、元字元及限定符。今天我們繼續分享相關的正規表示式。

正規表示式查詢數字和字母是很簡單的,因為已經有了對應這些字元集合的元字元(「\d」、"\w"),但是如有要匹配沒有預定字元的字元集合(比如:母音字母a e i o u),應該怎麼辦?

很簡單,只需要在方括號裡列出他們就行了,像[aeiou]可以匹配任何乙個英文母音字母,[.?!]匹配標點符號(. ? !)。也可以輕鬆的指定乙個字元範圍,像[0-9]代表的含義與「\d」就是完全一致的,一位數字;同理[a-z0-9a-z]完全等於「\w」。

注:要想匹配給定字串中任意乙個漢字,可以使用[\u4e00-\u9fa5];如果要匹配連續多個漢字,可以使用[\u4e00-\u9fa5]+。

上面講的是匹配符合指定字元集合的字串,如果要匹配不符合指定字元集合的字元換,正規表示式提供了 ^ 字元。這個字元除了表示行的開始,放在方括號中,表示排除的意思。例如:

[^a-za-z]
該表示式用於匹配乙個不是字母的字元。

如果匹配的身份證號碼,首先我們了解一下身份證號碼的規則。身份證號碼長度為15位或者18位,如果是15位,則全部是數字,如果為18位,前17位是數字,最後一位檢驗位,可能為數字或者字母x。

在上面的描述中,包含著條件選擇邏輯,這就是需要使用選擇字元(|)來實現,該字元可以理解為 「或」,匹配身份證的表示式可以寫成如下:

(^\d$)|(^\d$)|(^\d)(\d|x|x)$
正規表示式中的轉義字元(\)和python中的大同小異,都是將特殊字元(如 . ? \ 等)變為普通的字元,舉乙個ip位址的例項,用正規表示式匹配諸如「127.0.0.1」格式的ip位址,如果直接使用點字元,格式為:

[1-9].[0-9].[0-9].[0-9]
這顯然是不對的,因為 .可以匹配乙個任意字元,這時不僅是127.0.0.1這樣的ip,連127101011這樣的字串也會被匹配出來,所以在使用 .時,需要使用轉義字元(\)。修改後的上面例子的正規表示式應為:

[1-9]\.[0-9]\.[0-9]\.[0-9]
注:括號在正則表大師中也算是乙個字元

(six|four)th
上面這個表示式的意思是匹配單詞 sixth或者 fourth,如果不使用小括號,那麼就變成了匹配單詞six和 fourthle 。

小括號的第二個作用是分組,也就是子表示式,如:

(\.[0-9]),就是對分組(\.[0-9])進行重複操作。

花絮:

Python合集之Python字典(四)

ps 前段時間因為年底時間比較繁忙,沒有及時更新,望大家見諒,今天趁著大年初一趕緊給大家更新一波。由於字典是可變序列,所以可以隨時在字典中新增 鍵 值 對 向字典中新增元素的語法格式如下 dictionary key value 引數說明 dictionary 表示字典名稱 key 表示要新增元素的...

Python合集之Python元組(一)

在上一節的合集中,我們了解了python的二維列表的相關知識,本節我們將進一步了解一下python元組的相關知識。元組是python中另一種重要的序列結構,與列表類似,也是由一系列按特定順序排列的元素組成,但是他是不可變序列。因此,元組也可以稱為不可變的列表。在形式上,元組的所有元素都放在 中,兩個...

Python合集之Python列表(五)

在上一節的合集中,我們了解了python 列表中元素的統計及計算的相關知識,本節我們將進一步了解一下python列表中元素的排序的相關知識。在實際開發中,經常需要對列表進行排序。python中提供了兩種常用的對列表進行排序的方法 使用列表物件的sort 方法,使用內建的sorted 函式。列表物件提...