# re模塊 正則表達式,對字符串進行模糊匹配 import re # 元字符:. ^ $ * + ? {} [] | () \ # . 代表任意的一個符號,除了\n # ^ 代表必須是從字符串的開頭進行匹配 # $ 代表必須是從字符串的結尾進行匹配 # * 代表按*左邊的字符進行匹配,包含0-無窮次 默認貪婪匹配,按最多的進行匹配 # + 代表按+左邊的字符進行匹配,包含1-無窮次 默認貪婪匹配,按最多的進行匹配 # ? 代表按?左邊的字符進行匹配,包含0-1次 默認貪婪匹配,按最多的進行匹配 # {} 定義匹配的范圍 默認貪婪匹配,按最多的進行匹配 # {0, } 表示0到窮次 相當於* # {1, } 表示1到無窮次,相當於+ # {0,1} 表示0到1次,相當於? # 將貪婪匹配改為惰性匹配,只需要在上面幾個元字符后加? # [] 字符集 字符集中的字符都是或的作用,在字符集有功能的符號是 - ^ \ # - 代表左邊的字符到右邊的字符 # [a-z] 代表a到z # [A-Z] 代表A到Z # [0-9] 代表0到9 # ^ 代表非 # [^a-z] 代表非a-z的所有字符 # \ 代表轉義符,后面跟元字符則去除特殊功能,后面跟某些字符實現特殊功能 # \d 匹配任何十進制數;相當於[0-9] # \D 匹配任何非數字字符;相當於[^0-9] # \s 匹配任何空白字符; 相當於[\t\n\r\f\v] # \S 匹配任何非空白字符; 相當於[^\t\n\r\f\v] # \w 匹配任何字母數字字符與下划線;相當於[a-zA-Z0-9_] # \W 匹配任何非字母數字字符與下划線;相當於[^a-zA-Z0-9_] # \b 匹配任何一個特殊字符邊界;如空格 & # 等 # 因為的python中,\b代表轉義字符退格,當引入re模塊想使用\b來匹配任何一個特殊字符邊界時,應當使用\\b
Python中的轉義字符有
# 匹配句子中單詞的I(非單詞中的I) re.findall('I\\b', 'Hello, I am LIST') # 代表匹配'I ' # 或者 re.findall(r'I\b', 'Hello, I am LIST') # r代表使用原生字符串,字符串中的內容不作任何轉義 # 求數學表達式最里層的括號中的字符 re.findall('\([^()]*\)', '12+(34*6+2-5*(2-1))') # 以(開對,以)結尾,中間不包含()的所有字符 # | 代表匹配左邊的字符或右邊的字符 # () 分組,將()中的字符作為一個整體 # (?P<分組名>正則) 命名分組,將取到的結果放到相應的分組名下 # 取出人名及年齡並放到命名的分組name和age中 mygroup = re.search('(?P<name>[a-z]+)(?P<age>\d+)', 'alex36wusir34xialv33') print(mygroup.group('name')) print(mygroup.group('age'))