日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python标准库01 正则表达式 (re包)

發(fā)布時間:2025/4/16 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python标准库01 正则表达式 (re包) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要:Python正則表達式標準庫介紹

我將從正則表達式開始講Python的標準庫。正則表達式是文字處理中常用的工具,而且不需要額外的系統(tǒng)知識或經驗。我們會把系統(tǒng)相關的包放在后面講解。

?

正則表達式(regular expression)主要功能是從字符串(string)中通過特定的模式(pattern),搜索想要找到的內容。

語法

之前,我們簡介了字符串相關的處理函數(shù)。我們可以通過這些函數(shù)實現(xiàn)簡單的搜索功能,比如說從字符串“I love you”中搜索是否有“you”這一子字符串。但有些時候,我們只是模糊地知道我們想要找什么,而不能具體說出我是在找“you”,比如說,我想找出字符串中包含的數(shù)字,這些數(shù)字可以是0到9中的任何一個。這些模糊的目標可以作為信息寫入正則表達式,傳遞給Python,從而讓Python知道我們想要找的是什么。

(官方documentation)

在Python中使用正則表達式需要標準庫中的一個包re。

123import rem = re.search('[0-9]','abcd4ef')print(m.group(0))

re.search()接收兩個參數(shù),第一個’[0-9]‘就是我們所說的正則表達式,它告訴Python的是,“聽著,我從字符串想要找的是從0到9的一個數(shù)字字符”。

re.search()如果從第二個參數(shù)找到符合要求的子字符串,就返回一個對象m,你可以通過m.group()的方法查看搜索到的結果。如果沒有找到符合要求的字符,re.search()會返回None。

?

如果你熟悉Linux或者Perl, 你應該已經熟悉正則表達式。當我們打開Linux shell的時候,可以用正則表達式去查找或著刪除我們想要的文件,比如說:

$rm book[0-9][0-9].txt

這就是要刪除類似于book02.txt的文件。book[0-9][0-9].txt所包含的信息是,以book開頭,后面跟兩個數(shù)字字符,之后跟有”.txt”的文件名。如果不符合條件的文件名,比如說:

bo12.txt

book1.txt

book99.text

都不會被選中。

Perl中內建有正則表達式的功能,據(jù)說是所有正則表達式系統(tǒng)中最強的,這也是Perl成為系統(tǒng)管理員利器的一個原因。

?

正則表達式的函數(shù)

1 2 m = re.search(pattern, string)??# 搜索整個字符串,直到發(fā)現(xiàn)符合的子字符串。 m = re.match(pattern, string)?? # 從頭開始檢查字符串是否符合正則表達式。必須從字符串的第一個字符開始就相符。

可以從這兩個函數(shù)中選擇一個進行搜索。上面的例子中,我們如果使用re.match()的話,則會得到None,因為字符串的起始為‘a’, 不符合’[0-9]‘的要求。

對于返回的m, 我們使用m.group()來調用結果。(我們會在后面更詳細解釋m.group())

?

我們還可以在搜索之后將搜索到的子字符串進行替換:

12str = re.sub(pattern, replacement, string) # 在string中利用正則變換pattern進行搜索,對于搜索到的字符串,用另一字符串replacement替換。返回替換后的字符串。

?

此外,常用的正則表達式函數(shù)還有

re.split()??? # 根據(jù)正則表達式分割字符串, 將分割后的所有子字符串放在一個表(list)中返回

re.findall()? # 根據(jù)正則表達式搜索字符串,將所有符合的子字符串放在一給表(list)中返回

?

(在熟悉了上面的函數(shù)后,可以看一下re.compile(),以便于提高搜索效率。)

?

寫一個正則表達式

關鍵在于將信息寫成一個正則表達式。我們先看正則表達式的常用語法:

1)單個字符:

.??????????任意的一個字符

a|b??????? 字符a或字符b

[afg] ???? a或者f或者g的一個字符

[0-4]????? 0-4范圍內的一個字符

[a-f]????? a-f范圍內的一個字符

[^m]?????? 不是m的一個字符

s???????? 一個空格

S???????? 一個非空格

d???????? [0-9]

D???????? [^0-9]

w???????? [0-9a-zA-Z]

W???????? [^0-9a-zA-Z]

?

2)重復

緊跟在單個字符之后,表示多個這樣類似的字符

*???????? 重復?>=0?次

+???????? 重復?>=1?次

????????? 重復?0或者1?次

{m}? ? ???重復m次。比如說 a{4}相當于aaaa,再比如說[1-3]{2}相當于[1-3][1-3]

{m, n}????重復m到n次。比如說a{2, 5}表示a重復2到5次。小于m次的重復,或者大于n次的重復都不符合條件。

?

正則表達????????? 相符的字符串舉例

[0-9]{3,5}?????? 9678

a?b????????????? b

a+b????????????? aaaaab

?

3) 位置

^???????? 字符串的起始位置

$???????? 字符串的結尾位置

?

正則表達????????? 相符的字符串舉例??????? 不相符字符串

^ab.*c$????????? abeec?????????????? cabeec (如果用re.search(), 將無法找到。)
4)返回控制

我們有可能對搜索的結果進行進一步精簡信息。比如下面一個正則表達式:

output_(d{4})

該正則表達式用括號()包圍了一個小的正則表達式,d{4}。 這個小的正則表達式被用于從結果中篩選想要的信息(在這里是四位數(shù)字)。這樣被括號圈起來的正則表達式的一部分,稱為群(group)。
我們可以m.group(number)的方法來查詢群。group(0)是整個正則表達的搜索結果,group(1)是第一個群……

1 2 3 import re m = re.search("output_(d{4})", "output_1986.txt") print(m.group(1))

我們還可以將群命名,以便更好地使用m.group查詢:

123import rem = re.search("output_(?P<year>d{4})", "output_1986.txt")?? #(?P<name>...) 為group命名print(m.group("year"))

?

總結

re.search() re.match() re.sub() re.findall()

正則表達式構成方法

?

練習
有一個文件,文件名為output_1981.10.21.txt 。下面使用Python: 讀取文件名中的日期時間信息,并找出這一天是周幾。將文件改名為output_YYYY-MM-DD-W.txt (YYYY:四位的年,MM:兩位的月份,DD:兩位的日,W:一位的周幾,并假設周一為一周第一天)

習題參考解答

1 2 3 4 5 6 7 8 9 10 11 import re import datetime m = re.search('output_(?P<year>d{4}).(?P<month>d{2}).(?P<day>d{2})', 'output_1981.10.21.txt') weekday = datetime.datetime(int(m.group('year')),int(m.group('month')),int(m.group('day'))).strftime("%w") filename = 'output_' + m.group('year') + '-' + m.group('month') + '-' + m.group('day') + '-' + weekday + '.txt' print (weekday) print filename

總結

以上是生活随笔為你收集整理的Python标准库01 正则表达式 (re包)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄网站免费在线 | 伊人网伊人影院 | 婷婷在线免费 | 怨女1988国语版在线观看高清 | 久热精品在线视频 | 私拍在线 | 久久香蕉国产 | 97在线播放免费观看 | 热久久影院 | 黄色一级片在线免费观看 | 激情都市一区二区 | 国产欧美日韩综合精品 | 激情福利在线 | 久久久丁香| 国产宾馆实践打屁股91 | 亚洲国产精品自拍 | 中国a一片一级一片 | 很嫩很紧直喷白浆h | 九色国产视频 | 日韩和欧美的一区二区 | av片免费 | 男人午夜天堂 | 亚洲性猛交富婆 | 欧美处女 | 黄色avav| 91精品国产一区二区三区香蕉 | 精品久久久久久久 | 99视频这里有精品 | 91精品国产aⅴ一区二区 | 日本午夜视频 | 99久久精品无免国产免费 | 午夜在线免费观看 | 成人动漫在线免费观看 | 伊人久久青青草 | 国产黄色大全 | 国自产拍偷拍精品啪啪一区二区 | 国产女人18毛片水真多 | 毛片网站在线 | 国产精品久久久久久久久久直播 | 日本免费不卡 | 一区二区三区免费高清视频 | 青青青免费在线 | 日日干夜夜操 | 99自拍偷拍 | 日韩色在线观看 | 91在线观 | 国产三级短视频 | 国产人澡人澡澡澡人碰视频 | 久久丫精品国产亚洲av不卡 | 亚洲精品福利在线 | 中文字幕h| 国产另类自拍 | 少妇一级淫片免费放播放 | 成人动漫在线观看视频 | 饥渴的少妇和男按摩师 | 成人在线a| 性爱一级视频 | www.玖玖玖 | 999色综合| 中文字幕在线第一页 | 欧美日韩高清一区二区 国产亚洲免费看 | 一区精品在线观看 | 永久视频在线观看 | 蜜臀av中文字幕 | 国产亚州av | 天天操,夜夜操 | 在线免费观看h片 | 天天干天天爽天天操 | 中国一极毛片 | 老熟妇午夜毛片一区二区三区 | 亚洲第一区视频 | 老熟妇一区二区 | 在线日本中文字幕 | 色播日韩 | 91成人免费在线观看 | 亚洲成人中文字幕在线 | 日韩一卡二卡三卡四卡 | 337p嫩模大胆色肉噜噜噜 | 国产av剧情一区二区三区 | 艳妇乳肉豪妇荡乳xxx | 国产日韩亚洲欧美 | 性猛交xxxx乱大交3 | 国产做受高潮动漫 | 夜夜爽爽| 中文字幕蜜桃 | 毛片久久久久久久 | 国产+高潮+白浆+无码 | 干美女视频 | 欧美一级淫片免费 | 亚洲奶水xxxx哺乳期 | 国产欧美一区二区三区鸳鸯浴 | 成人国产视频在线观看 | 欧美激情在线播放 | 亚洲人xxx | 亚洲一区二区三区四区不卡 | 视频一区国产精品 | www.国产黄色| 亚洲欧美日韩中文字幕在线观看 | 日本大尺度做爰呻吟舌吻 |