正規表示式是對字串操作的⼀種邏輯公式,就是⽤事先定義好的⼀些特定字元、
及這些特定字元的組合,組成⼀個「規則字串」,這個「規則字串」⽤來表達對字
符串的⼀種過濾邏輯。
1.為什麼使⽤正規表示式
原⼦含義
\d0-9中任何⼀個字元 [0-9]
\d⾮0-9中的任何⼀個字元 [^0-9]
\s\n\r\t 空格
\s⾮\n\r\t 空格中任何⼀個字元 [^\n\t\r ]
⾃⼰建立的原⼦表,[0-4]代表0-4中任何⼀個字元
[^]排除原⼦表中的字元
^⾏⾸;在原⼦表中表示排除
$⾏結尾
[\u4e00-\u9fa5]
匹配純中⽂
\w0-9a-za-z的中任何⼀個字元 [0-9a-za-z]
\w⾮0-9a-za-z_的中任何⼀個字元[^0-9a-z_az]
.代表除\n之外的任何字元
\b詞邊界
\b⾮詞邊界
\a字串開始
\z字串的結尾
-表示域,0-9就表示0 到9所有數字字元
元字元含義{}
表示重複前乙個原子的次數
表示重複前乙個原子的m次
表示重複前乙個原子最少m次,最多n次
表示重複前⼀個原⼦的最少m次
()改變優先順序,取⼦元素
*重複0次或多次
+⾄少出現1次
?出現0次或1次
*?或+?
取消貪婪
x|y表示匹配x或者y
修飾符含義re.s
使.匹配所有字元
re.l
本地化識別
re.u
根據unicode字符集解析字元,會影響\b、\b、\w、\w
re.i
不區分⼤⼩寫
re.m
多行匹配
注意:
原型:re.match(pattern,string,flags=0)
功能:從字串起始位置匹配⼀個模式,如果不是從起始位置匹配則返回none
引數:patter 模式
string 要匹配的字串
flag 模式修正符
返回值: 匹配成功返回⼀個match object,失敗返回none
)# abcabcabc 匹配整個表示式
print
(ret.group(1)
)# abc 第⼀次匹配到的結果
print
(ret.span())
# (3, 12) 開始和結束位置
print
(ret.groups())
# 表示當正規表示式⾥有多個分組時,多個分組的匹配
結果
原型:re.search(pattern, string, flags=0)
功能:順序掃瞄字串,找到第⼀個匹配項結束
引數:patter 模式
string 要匹配的字串
flag 模式修正符
返回值:匹配成功,返回match object,否則返回none
print
(re.search(r'll'
,'hello'))
print
(re.search(r'll'
,'hello'
,re.i)
)
原型:findall(pattern, string, flags=0)
功能:掃瞄整個字串,並返回結果列表
引數:patter: 匹配的正規表示式
string: 要匹配的字串
flags:模式修正符
返回值:如果匹配成功返回⼀個列表,包含了所有匹配項,失敗返回空列表
print
(re.findall(r'oo'
,'kksdkoosdflsdfooksdfsdooppppweoo'
,re.i)
)#['oo', 'oo', 'oo', 'oo']
原型:split(pattern, string,maxsplit=0,
, flags=0)
功能:⽤模式做分隔符,將字串分隔,返回分隔列表,如果模式加上括號,則分
隔符會被保留
引數:patter: 匹配的正規表示式
string: 要匹配的字串
maxsplit 匹配次數,0不限制次數
flags:模式修正符
print
(re.split(r'\d|,|;'
,'w1w2w3w,w;w'))
#['w', 'w', 'w', 'w',
'w',
'w']
sub(pattern, repl, string, count=0)
subn(pattern, repl, string, count=0)
功能:在⽬標字串中以正規表示式的規則匹配字串,再把他們替換成指定的字
符串。可以指定替換的次數,
如果 不指定,替換所有的匹配字串
引數: pattern: 正規表示式(規則)
repl: 指定的⽤來替換的字串
string: ⽬標字串
count: 最多替換次數
區別:前者返回⼀個替換後的字串,後者返回⼀個元組,第⼀個元素替換後的字
符串, 第⼆個元素表示被替換的次數
print
(re.sub(r"(good)"
,"nice"
,"cheng is good man"))
print
(re.subn(r"(good)"
,"nice"
,"cheng is good man"
))
m = re.match(r"(\d)-(\d)"
,"010-53247654"
)#使⽤序號獲取對應組的資訊,group(0)⼀直代表的原始字串
print
(m.group(0)
)print
(m.group(1)
)print
(m.group(2)
)#檢視匹配的各組的情況
print
(m.groups(
))
原型:re.
compile
(pattern, flags=0)
功能:將正規表示式模式編譯成正規表示式物件,其 match(
) 和 search(
) ⽅法可⽤於匹配
引數:pattern 模式
flags 模式修正符
re_telephon = re.
compile
(r"^1(([3578]\d)|(47))\d$"
)#編譯,返回
print
(re_telephon.match(
"13600000000"))
#
30天Python基礎(linux作業系統)
一 linux系統優點 免費 開源 速度快,資源少 穩定 安全,不宕機 多 戶 多工 持多種平台 系統安裝 虛擬化和虛擬機器 虛擬機器 virtual machine 指通過軟體模擬的具有完整硬體系統功能的 運 在 個完全隔離環境中的完整計算機系統 虛擬化關機 sudo shutdown h 18 ...
python正則 python正則表達
正規表示式是一種用來匹配字串的強有力的 設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,就認為它 匹配 否則就不匹配。一 可以通過幾類符號設計限定規則,常用的思想如下 匹配除換行符以外的任意字元 w匹配字母 數字 下劃線或漢字 w匹配字母 數字 下劃線或漢字以外的字元 s匹配任...
Python 正規表示式(基礎)
正規表示式 regular expression 是乙個特殊的字串行,描述了一種字串匹配的模式可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串,或者是在指定的文章中,抓取特定的字串等。python處理正規表示式的模組是re模組,它是python語言擁有全部的正...