python内置模块re_常用内置模块(11):正则表达式、re模块
一、正則表達式
.? ? ? ? ? ? ? ? ?任何單個字符
[]? ? ? ? ? ? ? ? 字符集。比如[abc]表示a、b、c
[^ ]? ? ? ? ? ? ?非字符集。比如[^abc]表示不是a或b或c的字符
\d? ? ? ? ? ? ? ?數字。等價于[0-9]
\w? ? ? ? ? ? ? 單詞字符。等價于[A-Za-z0-9_]
二、re庫
2.1 常用函數
#查找
re.findall(pattern, string, flags=0) ? ? ? ?#搜索所有匹配結果,返回列表的形式。找不到,則返回空列表。
re.search(pattern, string, flags=0)? ? ??#搜索第一個匹配的結果。返回的是Match對象。
re.match(pattern, string, flags=0) ? ? ?? #類似于字符串中的startwith方法。搜索開頭是不是匹配。返回的是Match對象。
re.finditer(pattern, string, flags=0)? ? ? #搜索所有匹配的結果。返回一個迭代器,遍歷迭代器可以得到一個個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)? ? ? #搜索所有匹配結果,返回列表的形式【例1】。找不到,則返回空列表。【例2】
參數flags如下:
常用的就是re.I,可以忽略大小寫。【例3】
【例1】
結果:
【例2】
結果:
【例3】
結果:
2.1.2 re.search()
re.search(pattern, string, flags=0)? ? ? ? ? ?#搜索第一個匹配的結果。返回的是Match對象【例1】。如果匹配不到,則返回None.【例2】
Match對象是一次匹配的結果,包含匹配的很多信息:
【例1】
結果:
【例2】
結果:
2.1.3 re.match()
re.match(pattern, string, flags=0)? ? ? ? ? ? #類似于字符串中的startwith方法。搜索開頭是不是匹配。返回的是Match對象。【例1】
例1:
結果:
2.1.4 re.finditer()
re.finditer(pattern, string, flags=0)? ? ? ? ? ?#搜索所有匹配的結果。返回一個迭代器,遍歷迭代器可以得到一個個Match對象。【例1】
例1:
結果:
2.1.5 re.sub()
re.sub(pattern, repl, string, count=0, flags=0)? ? ? ? ???#類似于字符串中的replace方法,返回替換后的字符串。【例1】
pattern:要替換的串
repl:? ? ? ? 替換成的串
string:? ? ?待匹配的字符串
count:? ? ?匹配的最大替換次數。【例2】
例1:
結果:
例2:
結果:
2.1.6 re.split()
re.split(pattern, string, maxsplit=0, flags=0)#類似于字符串中的split方法,都是將一個字符串拆分成子字符串的列表。【例1】【例2】
maxsplit:? ?最大分割數,剩余部分作為最后一個元素輸出。
例1:
結果:
例2:
結果:
!和空格中間有一個空字符。
例3:
結果:
2.2 re庫的另一種用法
2.1中是直接使用函數。但是還有一種方法更常用,就是首先使用re.compile()函數,將正則表達式的字符串形式編譯成正則表達式對象,然后再使用這個對象的函數。
這樣的話,就可以一次編譯,多次操作。更好一點。
步驟一:regex = re.compile(pattern, flags=0)
步驟二:調用regex的方法,有:
例:
結果:
2.3 貪婪匹配
如果同時匹配到長度不同的多項,返回哪一個呢?
Re庫默認采用貪婪匹配,即輸出匹配最長的子串。【例1】【例3】
如何輸出最短的子串呢?【例2】【例3】
??只要長度輸出可能不同的,都可以通過在操作符后增加?變成最小匹配
例1:
結果:
例2:
結果:
例3:
結果:
2.4 分組
分組就是用一對圓括號“()”括起來的正則表達式,匹配出的內容就表示一個分組。從正則表達式的左邊開始看,看到的第一個左括號“(”表示第一個分組,第二個表示第二個分組,依次類推,需要注意的是,有一個隱含的全局分組(就是0),就是整個正則表達式。
注意:group(0)是整個匹配的結果,也就是不分組時的結果。
group(1)才是第一組的結果。
groups()是所有組的結果,放到了一個元組中。
例如:如果想把區號從匹配的電話號碼中分離,可以添加括號在正則表達式中創建分組,再使用group()方法,從一個分組中獲取匹配的文本。
結果:
總結
以上是生活随笔為你收集整理的python内置模块re_常用内置模块(11):正则表达式、re模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java.lang包怎么用_java.l
- 下一篇: java怎么测试dao_java-Moc