国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python re模塊介紹

2019-11-25 18:03:50
字體:
供稿:網(wǎng)友

Python中轉(zhuǎn)義字符

正則表達式使用反斜杠” / “來代表特殊形式或用作轉(zhuǎn)義字符,這里跟Python的語法沖突,因此,Python用” //// “表示正則表達式中的” / “,因為正則表達式中如果要匹配” / “,需要用/來轉(zhuǎn)義,變成” // “,而Python語法中又需要對字符串中每一個/進行轉(zhuǎn)義,所以就變成了” //// “。
上面的寫法是不是覺得很麻煩,為了使正則表達式具有更好的可讀性,Python特別設(shè)計了原始字符串(raw string),需要提醒你的是,在寫文件路徑的時候就不要使用raw string了,這里存在陷阱。raw string就是用'r'作為字符串的前綴,如 r”/n”:表示兩個字符”/”和”n”,而不是換行符了。Python中寫正則表達式時推薦使用這種形式。

正則表達式元字符說明

.  匹配除換行符以外的任意字符^  匹配字符串的開始$  匹配字符串的結(jié)束[] 用來匹配一個指定的字符類別?  對于前一個字符字符重復(fù)0次到1次*  對于前一個字符重復(fù)0次到無窮次{} 對于前一個字符重復(fù)m次{m,n} 對前一個字符重復(fù)為m到n次/d 匹配數(shù)字,相當于[0-9]/D 匹配任何非數(shù)字字符,相當于[^0-9]/s 匹配任意的空白符,相當于[ fv]/S 匹配任何非空白字符,相當于[^ fv]/w 匹配任何字母數(shù)字字符,相當于[a-zA-Z0-9_]/W 匹配任何非字母數(shù)字字符,相當于[^a-zA-Z0-9_]/b 匹配單詞的開始或結(jié)束

模塊函數(shù)說明即舉例
re.compile 將正則表達式編譯成pattern對象

compile(pattern, flags=0)

第一個參數(shù):規(guī)則
第二個參數(shù):標志位

re.match 只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數(shù)返回None

match(pattern, string, flags=0)

第一個參數(shù):規(guī)則
第二個參數(shù):表示要匹配的字符串
第三個參數(shù):標致位,用于控制正則表達式的匹配方式

re.search 匹配整個字符串,直到找到一個匹配

search(pattern, string, flags=0)

第一個參數(shù):規(guī)則
第二個參數(shù):表示要匹配的字符串
第三個參數(shù):標致位,用于控制正則表達式的匹配方式

>>> import re>>> pattern = re.compile(r'linuxeye')>>> match = pattern.match('VeVB.COm')>>> print match<_sre.SRE_Match object at 0x7f4e96e61c60>>>> print match.group()linuxeye>>> m = pattern.match('blog.VeVB.COm') #match匹配開頭,沒找到>>> print mNone>>> m = pattern.search('blog.VeVB.COm') #search匹配整個字符串,直到找到一個匹配>>> print m<_sre.SRE_Match object at 0x7f15abfc6b28>>>> print m.group()linuxeye
>>> m = re.match(r'linuxeye','VeVB.COm') #不用re.compile>>> print m<_sre.SRE_Match object at 0x7f4e96e61b90>>>> print m.group()linuxeye>>> m = re.match(r'linuxeye','m.survivalescaperooms.com')>>> print mNone

re.split 用于來分割字符串

split(pattern, string, maxsplit=0)

第一個參數(shù):規(guī)則
第二個參數(shù):字符串
第三個參數(shù):最大分割字符串,默認為0,表示每個匹配項都分割
實例:分割所有的字符串

>>> import re>>> test_str = "1 2 3 4 5">>> re.split(r'/s+',test_str)['1', '2', '3', '4', '5']>>> re.split(r'/s+',test_str,2) #分割前2個['1', '2', '3 4 5'] >>> test_str = "1 . 2. 3 .4 . 5">>> re.split(r'/.',test_str)['1 ', ' 2', ' 3 ', '4 ', ' 5']>>> re.split(r'/.',test_str,3)['1 ', ' 2', ' 3 ', '4 . 5']

re.findall 在目標字符串查找符合規(guī)則的字符串

findall(pattern, string, flags=0)

第一個參數(shù):規(guī)則
第二個參數(shù):目標字符串
但三個參數(shù):后面還可以跟一個規(guī)則選擇項
返回的結(jié)果是一個列表,建中存放的是符合規(guī)則的字符串,如果沒有符合規(guī)則的字符串唄找到,就會返回一個空值

>>> import re>>> test_mail = '<test01@gmail.com> <test02@gmail.org> test03@gmail.net'>>> mail_re = re.compile(r'/w+@g..../.[a-z]{3}')>>> re.findall(mail_re,test_mail)['test01@gmail.com', 'test02@gmail.org', 'test03@gmail.net']

re.sub 以正則表達式為基礎(chǔ)的替換工作

sub(pattern, repl, string, count=0)

第一個參數(shù):規(guī)則
第二個參數(shù):替換后的字符串
第三個參數(shù):字符串
第四個參數(shù):替換個數(shù)。默認為0,表示每個匹配項都替換

>>> test = 'blog.VeVB.COm VeVB.COm'>>> test_re = re.compile(r'/.')>>> re.sub(test_re,'--',test)'blog--linuxeye--com linuxeye--com'>>> re.sub(test_re,'--',test,1)'blog--VeVB.COm VeVB.COm'
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀宁县| 额尔古纳市| 彝良县| 延吉市| 新巴尔虎右旗| 华池县| 武汉市| 合川市| 绥滨县| 蒙山县| 吉林市| 福州市| 秦皇岛市| 镇江市| 桃源县| 安乡县| 宁国市| 安达市| 舒兰市| 蓝田县| 荣昌县| 肃南| 上林县| 辽阳县| 宣恩县| 邵武市| 江永县| 泽库县| 孝义市| 克什克腾旗| 安康市| 枣强县| 宝鸡市| 栖霞市| 金溪县| 巩留县| 嘉善县| 济源市| 康定县| 天全县| 共和县|