筆記 正規表示式記錄(四) 正則元字元和功能

2021-10-02 06:07:40 字數 3207 閱讀 7745

一、正規表示式常用符號:

常用符號

符號功  能

匹配中列舉出的字元,[^]排除中的字元

\d匹配數字,即0-9

\d匹配非數字,即不是數字,和\d相反

\s匹配空白,即空格、tab鍵\t、換行\n

\s匹配非空白,和\s相反

.匹配任意字元(除了\n)

\w匹配單詞字元,即a-z、a-z、0-9、_

\w匹配非單詞字元,和\w相反

舉例:

1、、如:re.findall("[abc]456","a123a456b456abc456x456"),匹配a456,b456 c456,而不匹配x456。

2、[^]、如:re.findall("[^abc]456","a123a456b456abc456123d456ux456"),和上例正好相反,匹配除第乙個字元是a、b、c、組成的,字元+456,即,除了a456、b456、c456以外的,其它字元加456組成的串,如,d456、x456、z456都匹配。

3、\d,如:re.findall(r"[\d]abc",abc0abc9abcdabcxabc"),匹配前面是乙個數字,後面跟著abc的字串,匹配,0abc,1abc...9abc,不匹配dabc,xabc。

4、\d,如:re.findall(r"[\d]abc","1abcbabc#abc#aabcccdabc"),匹配babc,#abc,dabc,不匹配1abc,2abc等。

5、\s,如:re.findall(r"a\sb","abaa bbabba\tbbbbaa\nb"),匹配'a b', 'a\tb', 'a\nb'。

6、\s,如:re.findall(r"a\sb","aabaa1ba bbabba\tbba#bbaa\nb"),匹配'aab', 'a1b', 'abb', 'a#b'.

7、'.',如:re.findall(r"a.b","abaa bbabbaa\tbbbbaa\nb"),匹配'a b', 'abb', 'a\tb'。

8、\w,如:re.findall(r"1\w2\w3\w","a1b2c3d1#2@3!c"),匹配'1b2c3d'

9、w,如:re.findall(r"1\w2\w3w","a1b2c3d1#2@3!c"),匹配1#2@3!。

二、正規表示式匹配次數常用符號

匹配數量符號

符號功能

*匹配前乙個字元出現0次或者無限次,字元可有可無,如\d* 匹配0,也匹配00,同

+匹配前乙個字元至少出現一次或者無限次,至少一次,最多無限次,同

?匹配前乙個字元出現0次或者1次,最少0次,最多一次。同

匹配前乙個字元出現m次

匹配前乙個字元至少出現一次,最多無限次

匹配前乙個字元至少出現m次,最多出現n次

舉例:1、*,如:re.findall(r"abc\d*","123abc345dabc"),匹配abc345和abc。

2、+,如:re.findall(r"abc\d+","123abc345dabc"),匹配abc345。

3、?,如:re.findall(r"abc\d?","123abc345dabc"),匹配abc3和abc。

4、,如:re.findall(r"abc\d","abc123abc12"),匹配abc123.

5、,如:re.findall(r"abc\d","abc123abc12"),匹配abc123,abc12。

6、,如:re.findall(r"abc\d","abc123abc11abc"),匹配匹配abc12,abc11。

三、正規表示式匹配邊界

匹配邊界符號

符號功能

^匹配開頭字元,必須以^後面的字元開頭。

$匹配結尾字元,必須以$前面的字元結尾。

\b匹配單詞邊界(字串前須加r)

\b匹配非單詞邊界,和\b相反

舉例:1、^,如:re.findall(r"^abc\d","abc123abc456"),匹配abc1。

2、$,如:re.findall(r"\d\w*c$","123abc\n456abc"),匹配456abc。

3、\b,如:re.findall(r"\w*\b","123#abc@_a1b2!!!"),匹配123,abc,_a1b2。

4、\b,如:re.findall(r"\w*\b","123###abc@ !#_a1b2!!!"),匹配'12', '', 'ab', '', '_a1b';re.findall(r"\w*\b","123###abc@ !#_a1b2!!!"),匹配的是『##', , '@ !', '!!!'。

四、正規表示式匹配分組

匹配分組

字元功能

|匹配左右任意表示式(匹配左邊或者右邊或者左右都匹配)

(表示式)

對用括號括起來的表示式進行分組,有乙個括號分組乙個

\(數字)

引用分組,數字從1開始,0是全域性分組。

(?p)

給分組取別名.

(?p=name)

用分組別名,引用分組值,不能使用\(數字)引用。

舉例:1、|,如:re.findall(r"a[b|b]c","123abc456abc234abc"),匹配abc和abc。

2、(),如:re.findall(r"a(b|b)c","123abc456abc234abc"),結果是b,b,得到捕獲分組值。

3、\數字,如:re.sub(r"(a)bc",r"(\1)bc","abcabcababc123acaababc"),結果是abcabcababc123acaabc,將所有abc替換成abc。

4、(?pa)bc",r"(?p=a1)bc","abcabcababc123acaababc")結果是abcabcababc123acaabc,將所有abc替換成abc。

五、貪婪和非貪婪模式

貪婪和非貪婪模式匹配

字元功能

預設貪婪模式,盡可能多的匹配,能配多麼多就配多麼多。

數量匹配後加?

非貪婪模式,盡可能少的匹配,能配多麼少配多麼少

舉例:1、貪婪模式:如:re.match (r"\d+","1234abcde45678hijk"),結果是1234,盡可能的多匹配。

2、非貪婪模式:如:re.match (r"\d+?","1234abcde45678hijk"),結果是1,盡可能的少匹配。

六、

正規表示式 元字元

現在你已經知道幾個很有用的元字元了,如 b 還有 d 當然還有更多的元字元可用,比如 s 匹配任意的空白符,包括空格,製表符 tab 換行符,中文全形空格等 w匹配字母或數字或下劃線或漢字等。ba w b 匹配以字母a 開頭的單詞 先是某個單詞開始處 b 然後是字母a 然後是任意數量的字母或數字 w...

正規表示式 元字元

元字元 描述.點 匹配任何單個字元。例如正規表示式r.t匹配這些字串 rat rut r t,但是不匹配root。匹配行結束符。例如正規表示式weasel 能夠匹配字串 he s a weasel 的末尾 但是不能匹配字串 they are a bunch of weasels.匹配一行的開始。例如...

正規表示式元字元

l 基本元字元 元字元說明 匹配任意單個字元 邏輯或操作符 定義乙個字元集合,匹配該集合中的乙個字元 對字元集合求非 是對整個集合求非,而不是緊挨著 符號的字元 在字元集合中定義乙個區間。如 a za z 對下乙個字元轉義。比如 n表示換行。數量元字元 元字元說明 匹配前乙個字元 子表示式 零次或多...