一、正規表示式常用符號:
常用符號
符號功 能
匹配中列舉出的字元,[^]排除中的字元
\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表示換行。數量元字元 元字元說明 匹配前乙個字元 子表示式 零次或多...