python re模組正規表示式基礎語法實戰詳解

2021-10-03 22:15:02 字數 4007 閱讀 4919

介紹:正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則 字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。

正規表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。

1. \d 匹配單個數字,相當於[0-9]

import re

#1.\d 匹配單個數字,相當於[0-9]

res = re.findall("\d","abc1ef23g")

print(res)

#輸出結果:['1', '2', '3']

res = re.findall("[0-9]","abc1ef23g")

print(res)

#輸出結果:同上

2.\d 匹配單個非數字字元,相當於[^0-9]

res = re.findall("\d","abc1ef23g")

print(res)

#輸出結果:['a', 'b', 'c', 'e', 'f', 'g']

res = re.findall("[^0-9]","abc1ef23g")

print(res)

#輸出結果:同上

3.\s 匹配空白字串,如空格,換行\n,tab等,相當於[\f\n\r\t\v]

res = re.findall("\s","abc ef\ng\th")

print(res)

#輸出結果:[' ', '\n', '\t']

res = re.findall("[ \f\n\r\t\v]","abc ef\ng\th")

print(res)

#輸出結果:同上

4.\w 匹配單個字母,數字,或下劃線,相當於[a-za-z0-9_]

res = re.findall("\w","a_b12c!!_")

print(res)

#輸出結果:['a', '_', 'b', '1', '2', 'c', '_']

res = re.findall("[a-za-z0-9_]","a_b12c!!_")

print(res)

#輸出結果:同上

5.[aeiou] 匹配字串中的母音字元(中括號中的任意字元)

res = re.findall("[aeiou]","abcdefg12!!")

print(res)

#輸出結果:['a', 'e']

6..匹配除換行符外的任意字串

import re

res = re.findall(".","ab12\n!#")

print(res)

#輸出結果:['a', 'b', '1', '2', '!', '#']

#加上re.s,使.能夠匹配所有字串

res = re.findall(".","ab12\n!#",re.s)

print(res)

#輸出結果:['a', 'b', '1', '2', '\n', '!', '#']

7. *代表任意位, +代表至少一位,?代表可有可無

res = re.findall(".*","hello world!")

print(res)

#輸出結果:['hello world!', '']

#備註說明:因為空字串也算乙個字串,而*表示任意位,所以會多乙個''匹配結果

res = re.findall(".+","hello world!")

print(res)

#輸出結果:['hello world!']

#輸出字串中所有整數

res = re.findall("-?[0-9]+","ab12c-33d45678e99")

print(res)

#輸出結果:['12', '-33', '45678', '99']

8.匹配多位數字

#1.匹配兩位數字

res = re.findall("[0-9]","1ab12cd345efg66h77!")

print(res)

#輸出結果:['12', '34', '66', '77']

#2.匹配兩位或三位數字

res = re.findall("\d","1ab12cd345efg66h77!")

print(res)

#輸出結果:['12', '345', '66', '77']

#3.匹配至少一位以上的數字

res = re.findall("\d","1ab12cd345efg66h77!")

print(res)

#輸出結果:['1', '12', '345', '66', '77']

9.^ 匹配以.....開頭, $匹配以....結尾, ^$以....開頭且以.....結尾,相當於精確查詢

#1.^ 以....開始

res = re.findall("^ang","zhangsan")

print(res)

#輸出結果:

res = re.findall("^ang","angsan")

print(res)

#輸出結果:['ang']

#2.$ 以....結束

res = re.findall("san$","zhangsan")

print(res)

#輸出結果:['san']

res = re.findall("san$","zhangsan1")

print(res)

#輸出結果:

#3.^$ 以...開始且以....結束

res = re.findall("^ang$","ang")

print(res)

#輸出結果:['ang']

正則中的元字元說明:

1. 表示單個字元的原子表

[aoeiu] 表示任意乙個母音字母

[0-9] 表示任意一位數字等價於 \d

[0-9][0-9] 00~99

[a-z][0-9]表示小寫字和一位數字構成的兩位字元

[a-za-z0-9_] 表示任意一位大小字母或數字 \w

2.[^] 表示除中括號內原子之外的任何字元 是的取反

[^0-9] 表示任意一位非數字字元 等價於 \d

[^a-z] 表示任意一位非小寫字母

3. 表示對前面原子的數量控制,表示是m次

[0-9] 表示4位數字0000-9999 等價於\d

[1][3-8][0-9] 手機號碼

[\-]?[0-9]+  整數

4. 表示對前面原子的數量控制,表示是至少m次

[0-9] 表示兩位及以上的數字 等價於\d

5.表示對前面原子的數量控制,表示是m到n次

[a-z] 表示6到8位的小寫字母

6.* 表示對前面原子的數量控制,表示是任意次,等價於

7.+ 表示對前面原子的數量控制,表示至少1次,等價於

8.? 表示對前面原子的數量控制,表示0次或1次(可有可無) 等價於

正整數:[1-9][0-9]*

整數: [\-]?[0-9]+

9.() 表示乙個整體原子,【還有乙個子儲存單元的作用】。

也可以使用?:來拒絕子儲存。 (?:.*?)

例如:(red) 字串red

(red|blue) 字串red或blue

(abc) 表示兩個abc

| 表示或的意思

(red|blue) 字串red或blue

10.^ 用在正則單元塊的開頭處,表示必須以指定的開頭

11.$ 用在正則單元塊的結尾處,表示必須以指定的結尾

12.. 表示任意乙個除換行符之外的字元

常用組合: .*? 或 .+?   表示最小匹配所有字元(拒絕貪婪匹配)

.代表任意5位字元

Python re模組正規表示式

本文建議有一定正則基礎的看 正規表示式可以包含普通或者特殊字元。絕大部分普通字元,比如 a a 或者 0 都是最簡單的正規表示式。它們就匹配自身。有些字元,比如 或者 屬於特殊字元。特殊字元既可以表示它的普通含義,也可以影響它旁邊的正規表示式的解釋。重複修飾符 等 不能直接巢狀。這樣避免了非貪婪字尾...

python re模組 正規表示式

需要 importre 轉義字元 abc 匹配中括號中的乙個字元 a c 匹配a c中的乙個字元 a dm p 匹配a d或m p中的乙個字元 除換行符 n 之外的任何單個字元匹配 w 匹配乙個單詞字元 字母 包括a z a z 數字 下劃線 w 匹配 除 w之外的其它字元 s 匹配 任何空白字元,...

python re模組(正規表示式)

re 模組的使用 1.使用compile 函式編譯乙個parttern物件,例如 parttern re.compile r d 2.通過pattern物件提供的一系列屬相和方法,對文字進行匹配查詢,獲得結果,即乙個match物件 3.使用match物件的屬相和方法獲取資訊 match.group ...