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

歡迎訪問 生活随笔!

生活随笔

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

python

python内置模块re_常用内置模块(11):正则表达式、re模块

發(fā)布時間:2025/4/17 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python内置模块re_常用内置模块(11):正则表达式、re模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、正則表達式

.? ? ? ? ? ? ? ? ?任何單個字符

[]? ? ? ? ? ? ? ? 字符集。比如[abc]表示a、b、c

[^ ]? ? ? ? ? ? ?非字符集。比如[^abc]表示不是a或b或c的字符

\d? ? ? ? ? ? ? ?數(shù)字。等價于[0-9]

\w? ? ? ? ? ? ? 單詞字符。等價于[A-Za-z0-9_]

二、re庫

2.1 常用函數(shù)

#查找

re.findall(pattern, string, flags=0) ? ? ? ?#搜索所有匹配結(jié)果,返回列表的形式。找不到,則返回空列表。

re.search(pattern, string, flags=0)? ? ??#搜索第一個匹配的結(jié)果。返回的是Match對象。

re.match(pattern, string, flags=0) ? ? ?? #類似于字符串中的startwith方法。搜索開頭是不是匹配。返回的是Match對象。

re.finditer(pattern, string, flags=0)? ? ? #搜索所有匹配的結(jié)果。返回一個迭代器,遍歷迭代器可以得到一個個Match對象。

#替換

re.sub(pattern, repl, string, count=0, flags=0)#類似于字符串中的replace方法。替換。在string中匹配pattern,然后替換成repl。

#切分

re.split(pattern, string, maxsplit=0, flags=0)#類似于字符串中的split方法,都是將一個字符串拆分成子字符串的列表。

2.1.1? re.findall()

re.findall(pattern, string, flags=0)? ? ? #搜索所有匹配結(jié)果,返回列表的形式【例1】。找不到,則返回空列表。【例2】

參數(shù)flags如下:

常用的就是re.I,可以忽略大小寫。【例3】

【例1】

結(jié)果:

【例2】

結(jié)果:

【例3】

結(jié)果:

2.1.2 re.search()

re.search(pattern, string, flags=0)? ? ? ? ? ?#搜索第一個匹配的結(jié)果。返回的是Match對象【例1】。如果匹配不到,則返回None.【例2】

Match對象是一次匹配的結(jié)果,包含匹配的很多信息:

【例1】

結(jié)果:

【例2】

結(jié)果:

2.1.3 re.match()

re.match(pattern, string, flags=0)? ? ? ? ? ? #類似于字符串中的startwith方法。搜索開頭是不是匹配。返回的是Match對象。【例1】

例1:

結(jié)果:

2.1.4 re.finditer()

re.finditer(pattern, string, flags=0)? ? ? ? ? ?#搜索所有匹配的結(jié)果。返回一個迭代器,遍歷迭代器可以得到一個個Match對象。【例1】

例1:

結(jié)果:

2.1.5 re.sub()

re.sub(pattern, repl, string, count=0, flags=0)? ? ? ? ???#類似于字符串中的replace方法,返回替換后的字符串。【例1】

pattern:要替換的串

repl:? ? ? ? 替換成的串

string:? ? ?待匹配的字符串

count:? ? ?匹配的最大替換次數(shù)。【例2】

例1:

結(jié)果:

例2:

結(jié)果:

2.1.6 re.split()

re.split(pattern, string, maxsplit=0, flags=0)#類似于字符串中的split方法,都是將一個字符串拆分成子字符串的列表。【例1】【例2】

maxsplit:? ?最大分割數(shù),剩余部分作為最后一個元素輸出。

例1:

結(jié)果:

例2:

結(jié)果:

!和空格中間有一個空字符。

例3:

結(jié)果:

2.2 re庫的另一種用法

2.1中是直接使用函數(shù)。但是還有一種方法更常用,就是首先使用re.compile()函數(shù),將正則表達式的字符串形式編譯成正則表達式對象,然后再使用這個對象的函數(shù)。

這樣的話,就可以一次編譯,多次操作。更好一點。

步驟一:regex = re.compile(pattern, flags=0)

步驟二:調(diào)用regex的方法,有:

例:

結(jié)果:

2.3 貪婪匹配

如果同時匹配到長度不同的多項,返回哪一個呢?

Re庫默認采用貪婪匹配,即輸出匹配最長的子串。【例1】【例3】

如何輸出最短的子串呢?【例2】【例3】

??只要長度輸出可能不同的,都可以通過在操作符后增加?變成最小匹配

例1:

結(jié)果:

例2:

結(jié)果:

例3:

結(jié)果:

2.4 分組

分組就是用一對圓括號“()”括起來的正則表達式,匹配出的內(nèi)容就表示一個分組。從正則表達式的左邊開始看,看到的第一個左括號“(”表示第一個分組,第二個表示第二個分組,依次類推,需要注意的是,有一個隱含的全局分組(就是0),就是整個正則表達式。

注意:group(0)是整個匹配的結(jié)果,也就是不分組時的結(jié)果。

group(1)才是第一組的結(jié)果。

groups()是所有組的結(jié)果,放到了一個元組中。

例如:如果想把區(qū)號從匹配的電話號碼中分離,可以添加括號在正則表達式中創(chuàng)建分組,再使用group()方法,從一個分組中獲取匹配的文本。

結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的python内置模块re_常用内置模块(11):正则表达式、re模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。