介紹:正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則 字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。
正規表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。
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 ...