正規表示式的邊界表示

2021-10-21 10:33:14 字數 1964 閱讀 6170

接下來學習正規表示式的邊界表示,邊界表示就是在寫正規表示式的時候,限制匹配的字串的開始和結束邊界。

字元 描述

^ 匹配字串開頭

$ 匹配字串結尾

\b 匹配乙個單詞的邊界

\b 匹配非單詞邊界

注意:邊界字元只用於描述邊界資訊,不能用於字元的匹配。

示例:完善之前課時中關於手機號碼匹配的示例,在匹配超過11位的手機號,或者11位的手機號後邊還有其他字元的情況,正規表示式也能夠匹配成功,這種情況是不允許的。這種情況就需要限制手機號的結尾。

#使用$限制匹配的字串以11位數字組成,結尾不能新增其他字元

rs = re.match(

"1[3578]\d$"

,"13612345678"

)print

(rs.group())

#匹配正確的手機號

#手機號末尾新增字串將匹配失敗

rs = re.match(

"1[3578]\d$"

,"13612345678abc"

)#匹配失敗

print

(type

(rs)

)#空型別

執行結果:

13612345678

(使用match方法進行正則匹配「^」匹配開頭不是很明顯,因為match本身就是從左向右順序匹配的)

示例:郵箱匹配

#郵箱位址以3到10個單詞字元開始,以@163.com結束

rs = re.match(

"\[email protected]$"

,"[email protected]"

)print

(rs)

rs = re.match(

"\[email protected]$"

,"[email protected]"

)print

(rs)

rs = re.match(

"\[email protected]$"

,"[email protected]"

)print

(rs)

rs = re.match(

"\[email protected]$"

,"[email protected]"

)print

(rs)

執行結果:

<_sre.sre_match object; span=(0, 17), match=『[email protected]』>

none

none

none

問題1:隨意用乙個字母代替郵箱中的「.」也會匹配成功

rs = re.match(

"\[email protected]$"

,"hello_123@163hcom"

)print

("匹配結果:%s"

%rs)

執行結果:

匹配結果:<_sre.sre_match object; span=(0, 17), match=『hello_123@163hcom』>

原因是:在正規表示式中「.」有特殊的含義,表示除\n之外的任意字元

解決辦法:使用轉義字元\ 標識「.」是普通字元「.」

rs = re.match(

"\w@163\.com$"

,"[email protected]"

)print

("匹配結果1:%s"

%rs)

rs = re.match(

"\w@163\.com$"

,"hello_123@163hcom"

)print

("匹配結果2:%s"

%rs)

執行結果:

匹配結果1:<_sre.sre_match object; span=(0, 17), match=『[email protected]』>

匹配結果2:none

正規表示式之字元邊界

非零寬字元 能夠匹配字元的 特殊 字元。如 d會匹配乙個數字,s會匹配空白字元 零寬字元 不匹配字元,只標記位置 具體含義見下文 表示式表示含義 與字串開始的地方匹配 與字串結束的地方匹配 b匹配乙個單詞邊界 上例表示 匹配以 a 作為字串開始的位置 上例表示 匹配以 l 作為字串結尾的位置 初學者...

C 正規表示式 單詞邊界

using system using system.collections.generic using system.linq using system.text using system.text.regularexpressions using system.threading.tasks na...

正規表示式常用表示

很多不太懂正則的朋友,在遇到需要用正則校驗資料時,往往是在網上去找很久,結果找來的還是不很符合要求。所以我最近把開發中常用的一些正規表示式整理了一下,包括校驗數字 字元 一些特殊的需求等等。給自己留個底,也給朋友們做個參考。一 校驗數字的表示式 數字 0 9 n位的數字 d 至少n位的數字 d m ...