亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

理解python正則表達式

2020-01-04 17:50:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python正則表達式,在python中,對正則表達式的支持是通過re模塊來支持的,想要了解python正則表達式的朋友可以參考一下
 

在python中,對正則表達式的支持是通過re模塊來支持的。使用re的步驟是先把表達式字符串編譯成pattern實例,然后在使用pattern去匹配文本獲取結果。

其實也有另外一種方式,就是直接使用re模塊的方法,但是這樣就不能使用編譯后的pattern實例了。

實例:

#!/usr/bin/python# -*- coding: utf-8 -*-import repat = re.compile(r'hello')match = pat.match('hello world!')if match:  print match.group()match1 = re.match(r'hello','hello world!')if match1:  print match1.group()  print match1.pos

返回的結果相同,都是 hello

關于Pattern 對象:

它是由re.complie函數來構造的,是一個編譯好的正則表達式,通過Pattern提供的一系列方法可以對文本進行匹配查找。

Pattern不能直接實例化,必須使用re.compile()進行構造。

Pattern提供了幾個可讀屬性用于獲取表達式的相關信息:

  • pattern: 編譯時用的表達式字符串。
  • flags: 編譯時用的匹配模式。數字形式。
  • groups: 表達式中分組的數量。
  • groupindex: 以表達式中有別名的組的別名為鍵、以該組對應的編號為值的字典,沒有別名的組不包含在內。

關于 re.compile方法

re.compile(strPattern[, flag]):

這個方法是Pattern類的工廠方法,用于將字符串形式的正則表達式編譯為Pattern對象。 第二個參數flag是匹配模式,取值可以使用按位或運算符'|'表示同時生效,比如re.I | re.M。另外,你也可以在regex字符串中指定模式,比如re.compile('pattern', re.I | re.M)與re.compile('(?im)pattern')是等價的。 
可選值有:

  • re.I(re.IGNORECASE): 忽略大小寫(括號內是完整寫法,下同)
  • M(MULTILINE): 多行模式,改變'^'和'$'的行為(參見上圖)
  • S(DOTALL): 點任意匹配模式,改變'.'的行為
  • L(LOCALE): 使預定字符類 /w /W /b /B /s /S 取決于當前區域設定
  • U(UNICODE): 使預定字符類 /w /W /b /B /s /S /d /D 取決于unicode定義的字符屬性
  • X(VERBOSE): 詳細模式。這個模式下正則表達式可以是多行,忽略空白字符,并可以加入注釋

1).關于 match方法:

Match對象是一次匹配的結果,包含了很多關于此次匹配的信息,可以使用Match提供的可讀屬性或方法來獲取這些信息。

屬性:

  • string: 匹配時使用的文本。
  • re: 匹配時使用的Pattern對象。
  • pos: 文本中正則表達式開始搜索的索引。值與Pattern.match()和Pattern.seach()方法的同名參數相同。
  • endpos: 文本中正則表達式結束搜索的索引。值與Pattern.match()和Pattern.seach()方法的同名參數相同。
  • lastindex: 最后一個被捕獲的分組在文本中的索引。如果沒有被捕獲的分組,將為None。
  • lastgroup: 最后一個被捕獲的分組的別名。如果這個分組沒有別名或者沒有被捕獲的分組,將為None。

方法:

1、group([group1, …]): 
獲得一個或多個分組截獲的字符串;指定多個參數時將以元組形式返回。group1可以使用編號也可以使用別名;編號0代表整個匹配的子串;不填寫參數時,返回group(0);沒有截獲字符串的組返回None;截獲了多次的組返回最后一次截獲的子串。
2、groups([default]): 
以元組形式返回全部分組截獲的字符串。相當于調用group(1,2,…last)。default表示沒有截獲字符串的組以這個值替代,默認為None。
3、groupdict([default]): 
返回以有別名的組的別名為鍵、以該組截獲的子串為值的字典,沒有別名的組不包含在內。default含義同上。
4、start([group]): 
返回指定的組截獲的子串在string中的起始索引(子串第一個字符的索引)。group默認值為0。
5、end([group]): 
返回指定的組截獲的子串在string中的結束索引(子串最后一個字符的索引+1)。group默認值為0。
6、span([group]): 
返回(start(group), end(group))。
7、expand(template): 
將匹配到的分組代入template中然后返回。template中可以使用/id或/g<id>、/g<name>引用分組,但不能使用編號0。/id與/g<id>是等價的;但/10將被認為是第10個分組,如果你想表達/1之后是字符'0',只能使用/g<1>0。
請看例子:

#!/usr/bin/python# -*- coding: utf-8 -*-import rem = re.match(r'(/w+)/s(/w+)','aaa bbb ccc')print m.stringprint m.reprint m.posprint m.endposprint m.lastindexprint m.lastgroupprint m.group()print m.start()print m.end()print m.span()print m.expand(r'/2 /1')

結果為:

aaa bbb ccc
<_sre.SRE_Pattern object at 0x10dbfda08>
0
11
2
None
aaa bbb
0
7
(0, 7)
bbb aaa

2).關于search方法:

  查找可以匹配的子串,和match 不同的是他不是從開始處開始匹配的。如果沒有匹配上,則返回None

上面的例子中,將match 換成search返回的結果一樣

請看:

#!/usr/bin/python# -*- coding: utf-8 -*-import repat = re.compile(r'hello')match = pat.match('shello world!')if match:  print match.group()else:  print 'not match!'match1 = re.search(r'hello','shello world!')if match1:  print match1.group()

結果為:

not match!
hello

這2個函數,沒有其他區別,就是一個是從開始匹配的,另外一個不是開始的

3.split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]): 
按照能夠匹配的子串將string分割后返回列表。maxsplit用于指定最大分割次數,不指定將全部分割。

4.findall(string[, pos[, endpos]]) | re.findall(pattern, string[, flags]): 
搜索string,以列表形式返回全部能匹配的子串。

5.finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]): 
搜索string,返回一個順序訪問每一個匹配結果(Match對象)的迭代器。

6.sub(repl, string[, count]) | re.sub(pattern, repl, string[, count]): 
使用repl替換string中每一個匹配的子串后返回替換后的字符串。 
當repl是一個字符串時,可以使用/id或/g<id>、/g<name>引用分組,但不能使用編號0。 
當repl是一個方法時,這個方法應當只接受一個參數(Match對象),并返回一個字符串用于替換(返回的字符串中不能再引用分組)。 
count用于指定最多替換次數,不指定時全部替換。

7.subn(repl, string[, count]) |re.sub(pattern, repl, string[, count]): 
返回 (sub(repl, string[, count]), 替換次數)。

例子為:

#!/usr/bin/python# -*- coding: utf-8 -*-import rep =re.compile(r'/d+')print p.split('aa1bb2cc3dd4ee5ff6')print p.findall('aa1bb2cc3dd4ee5ff6')for m in p.finditer('aa1bb2cc3dd4ee5ff6'):  print m.group(),print '/nsub test'p1 =re.compile(r'(/w+)/s+(/w+)')s = 'i am ok'print p1.sub(r'/2 /1',s)print p1.subn(r'/2 /1',s)

結果:

['aa', 'bb', 'cc', 'dd', 'ee', 'ff', '']
['1', '2', '3', '4', '5', '6']
1 2 3 4 5 6 
sub test
am i ok
('am i ok', 1)

以上就是本文的全部內容,希望對大家的學習有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久热精品视频在线观看| 韩国福利视频一区| 日本韩国欧美精品大片卡二| 成人a视频在线观看| 亚洲国内高清视频| 亚洲一区美女视频在线观看免费| 国产亚洲欧美日韩精品| 亚洲老司机av| 免费成人高清视频| 欧洲精品毛片网站| 日韩中文字幕网| 91精品久久久久久久久不口人| 91日韩在线播放| 欧美理论在线观看| 亚洲欧美激情视频| 午夜精品视频在线| 91在线网站视频| 亚洲国产精彩中文乱码av| 91精品国产综合久久香蕉922| 国产欧美亚洲精品| 欧美精品videosex牲欧美| 91视频免费在线| 亚洲大胆人体视频| 欧美激情在线有限公司| 九九热精品视频国产| 91精品国产自产91精品| 91成人免费观看网站| 国产精品a久久久久久| 久久精品国产清自在天天线| 欧美性猛交xxxx久久久| 在线电影欧美日韩一区二区私密| 国产91精品在线播放| 国产精品综合久久久| 国产午夜精品免费一区二区三区| 亚洲精品免费在线视频| 国产日韩欧美成人| 成人免费观看49www在线观看| 欧美成人免费在线视频| 欧美日韩成人在线视频| 欧美美最猛性xxxxxx| 亚洲人成在线观看| 57pao成人永久免费视频| 久久久久久伊人| 日本久久亚洲电影| 亚洲在线观看视频网站| 亚洲欧美另类人妖| 九九热这里只有精品免费看| 在线播放国产一区中文字幕剧情欧美| 欧美主播福利视频| 尤物精品国产第一福利三区| 国产一区二区三区在线| 57pao精品| 亚洲自拍偷拍区| 国产美女高潮久久白浆| 久久免费国产视频| 最近2019好看的中文字幕免费| 一区二区三区视频观看| 欧美疯狂做受xxxx高潮| 欧美另类交人妖| 国产精品亚洲片夜色在线| 欧美黑人一级爽快片淫片高清| 欧洲精品在线视频| 欧美人在线观看| 国语自产精品视频在线看| 亚洲天堂av在线免费观看| 亚洲一区国产精品| 欧美午夜影院在线视频| xvideos亚洲人网站| 欧美黄色三级网站| 国产视频欧美视频| 亚洲国产精品va在线看黑人动漫| 91久久精品国产91久久| 中文字幕自拍vr一区二区三区| 亚洲精品一区二区三区婷婷月| 亚洲国产91精品在线观看| 亚洲一区二区三区成人在线视频精品| 高跟丝袜一区二区三区| 亚洲xxxx在线| 久久精品成人欧美大片古装| 激情成人在线视频| 1769国产精品| 久久久久久av| 国产免费一区二区三区香蕉精| 久久国产加勒比精品无码| 北条麻妃在线一区二区| 亚洲日本欧美中文幕| 一本色道久久88亚洲综合88| 国产精品久久久久久久久免费| 亚洲精品白浆高清久久久久久| 国产精品成人一区二区三区吃奶| 2019av中文字幕| www.日本久久久久com.| 精品久久久香蕉免费精品视频| 亚洲欧美中文日韩在线v日本| 亚洲天堂色网站| 国产成人欧美在线观看| 5566日本婷婷色中文字幕97| 亚洲成人a**站| 久久久久久网站| 成人有码在线播放| 日韩中文字幕欧美| 国产欧美精品xxxx另类| 在线国产精品视频| 欧美成人免费观看| 欧美伊久线香蕉线新在线| 欧美日韩激情美女| 国产精品av网站| 国内外成人免费激情在线视频网站| 日韩av在线网站| 91精品免费视频| 日韩av一区二区在线观看| 久久久久久18| 国产91色在线| 国产精品福利在线观看网址| 91精品视频网站| 亚洲男人天天操| 欧美激情视频在线观看| 精品国内产的精品视频在线观看| 在线观看久久av| 亚洲成年人在线| 97视频人免费观看| 国产精品视频资源| 91欧美精品午夜性色福利在线| 久久精品99久久久香蕉| 欧美丝袜第一区| 九九视频这里只有精品| 欧美一级片在线播放| 国产精品视频免费在线| 国产在线视频一区| 亚洲一区二区精品| 精品视频在线播放| 日韩在线不卡视频| 久久成人av网站| 亚洲国产又黄又爽女人高潮的| 久久久国产一区二区三区| 精品久久久久久久久久| 91精品久久久久久久久青青| 精品欧美国产一区二区三区| 日韩综合中文字幕| xxx成人少妇69| 精品久久久视频| 日韩在线视频免费观看| 成人国产精品色哟哟| 亚洲欧美日韩一区二区在线| 成人激情视频在线观看| 欧美日韩国产精品专区| 国产91露脸中文字幕在线| 国产精品视频免费在线观看| 在线观看欧美日韩国产| 精品国产福利在线| 亚洲性生活视频| 国产精品天天狠天天看| 琪琪第一精品导航| 色婷婷综合成人| 欧美人与性动交| 懂色av一区二区三区| 激情久久av一区av二区av三区| 欧美性少妇18aaaa视频| 日本精品免费观看| 91亚洲精品一区二区| 亚洲男人第一网站| 国产精品高潮呻吟久久av野狼| 亚洲美女免费精品视频在线观看| 丝袜美腿亚洲一区二区|