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

首頁 > 學院 > 開發(fā)設計 > 正文

python學習筆記4-正則表達式

2019-11-14 17:13:41
字體:
來源:轉載
供稿:網(wǎng)友

import re -- 所有正則表達式相關的功能都包含在re模塊中

 

re.sub() -- 字符串替換

>>> import re>>> s= "100 NORTH BROAD ROAD">>> re.sub('ROAD$','RD.',s)'100 NORTH BROAD RD.'>>> s = "100 BROAD">>> re.sub('//bROUAD$','RD.',s)'100 BROAD'>>> s='100 BROAD ROAD APT. 3'>>> re.sub(r'/bROAD$','RD.', s)  '100 BROAD ROAD APT. 3'>>> re.sub(r'/bROAD/b', 'RD.',s)'100 BROAD RD. APT. 3'

 

注:

1) /b 表示在左邊必須有一個分隔符。

2) 正則表達式前面的 ‘r'告訴python,字符串中沒有任何字符需要轉義。eg., '/t'是一個制表符,r'/t'是一個字符‘/‘緊跟一個字符‘t'

 

re.search() -- 用正則表達式來匹配字符串,如果匹配成功,則返回一個匹配對象,如果沒有匹配成功,則返回none

>>> import re>>> pattern = '^M?M?M?$'>>> re.search(pattern, 'M')<_sre.SRE_Match object; span=(0, 1), match='M'>>>> re.search(pattern,'MM')<_sre.SRE_Match object; span=(0, 2), match='MM'>>>> re.search(pattern,'MMM')<_sre.SRE_Match object; span=(0, 3), match='MMM'>>>> re.search(pattern,'MMMMM')>>> re.search(pattern,'')<_sre.SRE_Match object; span=(0, 0), match=''>

 

>>> import re>>> pattern = '^M?M?M?$'>>> re.search(pattern, 'M')<_sre.SRE_Match object; span=(0, 1), match='M'>>>> re.search(pattern,'MM')<_sre.SRE_Match object; span=(0, 2), match='MM'>>>> re.search(pattern,'MMM')<_sre.SRE_Match object; span=(0, 3), match='MMM'>>>> re.search(pattern,'MMMMM')>>> re.search(pattern,'')<_sre.SRE_Match object; span=(0, 0), match=''>

 

注:

1)?-- 表示匹配可選

2) M{0,3} -- 表示匹配0~3次M

 

松散正則表達式:

1. 空白符被忽略。空格、制表、回車在正則表達式中并不會被匹配。如果想匹配這些字符,需要加轉義字符'/'。

2.注釋信息(以#開頭直到行尾)被忽略。

3. 用松散正則表達式時,需要傳遞re.VERBOSE參數(shù)。

>>> pattern = '''^                    #beginning of stringM{0,3}               #thousands - 0 to 3 Ms(CM|CD|D?C{0,3})     #hundreds  - 900(CM), 400(CD),0-300 (0 to 3 Cs) or 500-800                     #(D, followed by 0 to 3 Cs )                          (XC|XL|L?X{0,3})     #tens - 90(XC), 40(XL), 0-30 (0 TO 3 Xs), or 50~80                     #(L, followed by 0 to 3 Xs)(IX|IV|V?I{0,3})     #ones - 9 (IX), 4(IV),0-3 (0 to 3 Is),                     #or 5~8 (V,followed by 0 to 3 Is)$                    #end of string'''>>> re.search(pattern, 'M', re.VERBOSE)<_sre.SRE_Match object; span=(0, 1), match='M'>>>> re.search(pattern, 'MCMLXXXIX', re.VERBOSE)<_sre.SRE_Match object; span=(0, 9), match='MCMLXXXIX'>

 

案例:匹配電話號碼

/d: -- 匹配所有0-9數(shù)字

/D: -- 匹配除了數(shù)字外所有字符

+:-- 匹配一次或多次

* : -- 匹配0次或多次

>>> phonePattern = re.compile(r'(/d{3})/D*(/d{3})/D*(/d{4})/D*(/d*)$')>>> phonePattern.search('work 1-(800) 555.1212 #1234').groups()('800', '555', '1212', '1234')

 

正則表達式符號及其含義:

$--字符串結尾

^--字符串開頭

x?-- 匹配0次或一次x字符

x+:-- 匹配一次或多次x字符

x* : -- 匹配0次或多次x字符

x{m,n} -- 表示匹配m~n次x字符

x{n} -- 表示匹配n次x字符

(a|b|c) -- 表示匹配a或b或c

(x) -- 這是一個組合,被匹配到的字符串會被存儲,用re.search()返回對象的groups()方法獲得被匹配的值

/d: -- 匹配所有0-9數(shù)字

/D: -- 匹配除了數(shù)字外所有字符

/b: --匹配一個單詞邊界

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泽州县| 得荣县| 双流县| 特克斯县| 北海市| 防城港市| 巴东县| 五常市| 杭锦旗| 澳门| 宁城县| 德令哈市| 苍梧县| 连江县| 泰宁县| 青岛市| 扶绥县| 洛阳市| 玉林市| 肃宁县| 东阳市| 太仆寺旗| 安岳县| 成安县| 五寨县| 莱西市| 永城市| 吴川市| 文安县| 宜春市| 巴林右旗| 连山| 盐池县| 苏尼特左旗| 昌图县| 奈曼旗| 汝州市| 北宁市| 布拖县| 桓台县| 邓州市|