1. 程式人生 > >正則表示式各種符號含義

正則表示式各種符號含義

‘\’,轉義字元

為了逐字表達,你必須在"^.$()¦*+?{\"這些字元前加上轉移字元'\'。
請注意在方括號中,不需要轉義字元。

‘^’和’$’

'^':指出一個字串的開始
"$":指出一個字串的結尾
"^The":表示所有以"The"開始的字串("There","The cat"等);
"of despair$":表示所以以"of despair"結尾的字串;
"^abc$":表示開始和結尾都是"abc"的字串——呵呵,只有"abc"自己了;
"notice":表示任何包含"notice"的字串(如果不適用特殊字元,表示notice在被查詢的字串的任意部分)。
方括號中用'^'表示不希望出現的字元,'^'應在方括號裡的第一位。(如:"%[^a-zA-Z]%"表
示兩個百分號中不應該出現字母)。

‘*’,’+’和’?’,表示一個或一序列字元重複出現的次數

'*':“沒有或更多”
'+':“一次或更多”
'?':“沒有或一次”
"ab*":表示一個字串有一個a後面跟著零個或若干個b。("a", "ab", "abbb",……);
"ab+":表示一個字串有一個a後面跟著至少一個b或者更多;
"ab?":表示一個字串有一個a後面跟著零個或者一個b;
"a?b+$":表示在字串的末尾有零個或一個a跟著一個或幾個b。

‘{}’,用以表示重複次數的範圍

"ab{2}":表示一個字串有一個a跟著2個b("abb");
"ab{2,}":表示一個字串有一個a跟著至少2個b;
"ab{3,5}":表示一個字串有一個a跟著3到5個b。
請注意,你必須指定範圍的下限(如:"{0,2}"而不是"{,2}")。還有,你可能注意到了,'*','+'和'?'相當於"{0,}","{1,}"和"{0,1}"。

‘¦’,表示“或”操作

"hi¦hello":表示一個字串裡有"hi"或者"hello";
"(b¦cd)ef":表示"bef"或"cdef";
"(a¦b)*c":表示一串"a""b"混合的字串後面跟一個"c";

‘[]’,表示某些字元允許在一個字串中的某一特定位置出現

"[ab]":表示一個字串有一個"a"或"b"(相當於"a¦b");
"[a-d]":表示一個字串包含小寫的'a'到'd'中的一個(相當於"a¦b¦c¦d"或者"[abcd]");
"^[a-zA-Z]":表示一個以字母開頭的字串;
"[0-9]%":表示一個百分號前有一位的數字;
",[a-zA-Z0-9]$":表示一個字串以一個逗號後面跟著一個字母或數字結束。

‘.’,可以替代任何字元

"a.[0-9]":表示一個字串有一個"a"後面跟著一個任意字元和一個數字;
"^.{3}$":表示有任意三個字元的字串(長度為3個字元);

預定義字符集d,D,s,S,w,W,A,Z,b,B

'\d':數字[0-9]
'\D':非數字:
'\s':匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。
'\S':匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。
'\w':匹配包括下劃線的任何單詞字元。等價於'[A-Za-z0-9_]'。
'\W':匹配任何非單詞字元。等價於 '[^A-Za-z0-9_]'。
'\A':僅匹配字串開頭,同^
'\Z':僅匹配字串結尾,同$
'\b':匹配單詞邊界,例如’er\b’可以匹配’never’中的’er’,但不能匹配’very’中的’er’,因為never中的er單詞的右邊界。

針對\b,我們來舉幾個列子:

import re
W = re.findall(‘\btina’, ‘tina tinaaaa’)
Print(w)
結果:
[‘tina’, ‘tina’]。原因是因為上述字串可以拆分成兩個單詞,tina都是上述兩個單詞的左邊界。