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

歡迎訪問 生活随笔!

生活随笔

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

python

python——正则表达式详解(二)

發布時間:2023/12/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python——正则表达式详解(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文講解正則表達式常用的幾大函數方法:

方法使用格式講解
matchmatch(string, pos=0, endpos=-1)方法用于查找字符串的頭部,它只要找到了一個匹配的結果就返回
searchsearch(string, pos=0, endpos=-1)方法用于查找字符串的任何位置,它只要找到一個匹配的結果就返回
findallfindall(string, pos=0, endpos=-1)方法返回所有匹配的結果
finditerfinditer(string, pos=0, endpos=-1)通過該迭代器我們可以訪問匹配的每一個字符串
splitslit(strng, maxsplit=0)方法表示將能夠匹配的子串切割
subsub(repl, string, count=0)方法用來替換
subnsubn(repl, string, count=0)方法也是用于替換,返回一個元組

1.match方法講解

該方法用于查找字符串的頭部,它只要找到了一個匹配的結果就返回,說明:string是待匹配的字符串,pos和endpos指定字符串的起點和終點的位置,當不指定時,默認從頭部開始匹配,當匹配成功時,返回Match對象。

import re""" match(string, pos=0, endpos=-1) 該方法用于查找字符串的頭部,它只要找到了一個匹配的結果就返回 說明:string是待匹配的字符串,pos和endpos指定字符串的起點和終點的位置 當不指定時,默認從頭部開始匹配,當匹配成功時,返回Match對象 """ test_str = "aaaa12345678sfsdf" pattern = re.compile(r"\d+") matcher = pattern.match(test_str, 4, 12) print(matcher) # <re.Match object; span=(4, 12), match='12345678'> print(matcher.group()) # 12345678, 返回匹配的字符串,可以使用group()或者group(0) print(matcher.start()) # 4, 返回匹配的字符串在整個字符串的起始位置 print(matcher.end()) # 12, 返回匹配的字符串在整個字符串的結束位置 print(matcher.span()) # (4, 12), 返回(star(), end())

2.search方法講解

該方法用于查找字符串的任何位置,它只要找到一個匹配的結果就返回,
說明:string是帶匹配的字符串,pos和endpos分別為字符串的起始和結束位置,
當匹配成功時返回Match對象,匹配不成功時返回None。

import re""" search(string, pos=0, endpos=-1) 該方法用于查找字符串的任何位置,它只要找到一個匹配的結果就返回 說明:string是帶匹配的字符串,pos和endpos分別為字符串的起始和結束位置 當匹配成功時返回Match對象,匹配不成功時返回None """ # egg_001:匹配到第一個就返回 test_str = "aaa777bbb888ccc999" pattern = re.compile(r"\d+") matcher = pattern.search(test_str) print(matcher) # <re.Match object; span=(3, 6), match='777'># egg_002:指定起始位置 test_str = "aaa000bbb111ccc222" pattern = re.compile(r"\d+") matcher = pattern.search(test_str, 3, 12) print(matcher) # <re.Match object; span=(3, 6), match='000'> print(matcher.group()) # 000, 返回匹配的字符串,可以使用group()或者group(0) print(matcher.start()) # 3, 返回匹配的字符串在整個字符串的起始位置 print(matcher.end()) # 6, 返回匹配的字符串在整個字符串的結束位置 print(matcher.span()) # (3, 6), 返回(star(), end())

3.findall方法講解

該方法返回所有匹配的結果,
說明:string是帶匹配的字符串,pos和endpos分別為字符串的起始和結束位置,
當匹配成功時返回匹配的列表,匹配不成功時返回空列表,
捕獲:findall函數,在正則匹配里,如果有分組,就僅僅匹配分組里面的內容,
然后返回這個組的列表,如果有多個分組,那就把每一個分組看成一個單位,
組合成一個元組,然后返回一個含有多個元組的列表。

import re""" findall(string, pos=0, endpos=-1) 該方法返回所有匹配的結果 說明:string是帶匹配的字符串,pos和endpos分別為字符串的起始和結束位置, 當匹配成功時返回匹配的列表,匹配不成功時返回空列表, 捕獲:findall函數,在正則匹配里,如果有分組,就僅僅匹配分組里面的內容, 然后返回這個組的列表,如果有多個分組,那就把每一個分組看成一個單位, 組合成一個元組,然后返回一個含有多個元組的列表。 """ # egg_001:匹配所有位置并返回結果 test_str = "aaa111bbb222ccc333" pattern = re.compile(r"\d+") matcher = pattern.findall(test_str) print(matcher) # ['111', '222', '333']# egg_002:設置起始位置, 返回特定范圍內的結果 test_str = "aaa111bbb222ccc333" pattern = re.compile(r"\d+") matcher = pattern.findall(test_str, 2, 13) print(matcher) # ['111', '222']

4.finditer方法講解

說明:string是帶匹配的字符串,pos和endpos分別為字符串的起始和結束位置,
說明:該方法返回所有匹配的字符串,但是它返回的是一個迭代器,
通過該迭代器我們可以訪問匹配的每一個字符串。

import re""" finditer(string, pos=0, endpos=-1) 說明:string是帶匹配的字符串,pos和endpos分別為字符串的起始和結束位置, 說明:該方法返回所有匹配的字符串,但是它返回的是一個迭代器 通過該迭代器我們可以訪問匹配的每一個字符串 """ # egg_001:匹配所有符合要求的并返回一個迭代器 test_str = "aaa111bbb222ccc333" pattern = re.compile(r"\d+") matcher = pattern.finditer(test_str) print(matcher) # <callable_iterator object at 0x000001D9CB8FE8C8> for result in matcher:print("找到的字符串{0},位置是{1}".format(result.group(), result.span()))# 找到的字符串111,位置是(3, 6)# 找到的字符串222,位置是(9, 12)# 找到的字符串333,位置是(15, 18)# egg_002:設置匹配起始位置,返回范圍內匹配結果 test_str = "aaa111bbb222ccc333" pattern = re.compile(r"\d+") matcher = pattern.finditer(test_str, 3, 12) print(matcher) # <callable_iterator object at 0x0000026403301D88> for result in matcher:print("找到的字符串{0},位置是{1}".format(result.group(), result.span()))# 找到的字符串111,位置是(3, 6)# 找到的字符串222,位置是(9, 12)

5.split方法講解

該方法表示將能夠匹配的子串切割,說明:string表示需要匹配的字符串,
maxsplit表示最大的分割次數,不指定即為全部分割。

import re""" slit(strng, maxsplit=0) 說明:該方法表示將能夠匹配的子串切割,string表示需要匹配的字符串, maxsplit表示最大的分割次數,不指定即為全部分割 """ # egg_001: 返回切割后的結果 test_str = "aaaa bbbb cccc,dddd;eeee" pattern = re.compile(r"[,;\s]+") matcher = pattern.split(test_str) print(matcher) # ['aaaa', 'bbbb', '', 'cccc', 'dddd', 'eeee']# egg_002:設置切割次數,返回切割后的結果 test_str = "aaaa bbbb cccc,dddd;eeee" pattern = re.compile(r"[,;\s]+") matcher = pattern.split(test_str, 2) print(matcher) # ['aaaa', 'bbbb', 'cccc,dddd;eeee']

6.sub方法講解

該方法用來替換,
說明:repl如果為字符串,會使用repl替換字符串中的每一個匹配的子串,并且返回替換后的字符串,
如果為函數,則該函數應該只接收一個Match對象,并且返回一個字符串用于替換,
count用于指定替換次數。

import re""" sub(repl, string, count=0) 該方法用來替換 說明:repl如果為字符串,會使用repl替換字符串中的每一個匹配的子串,并且返回替換后的字符串, 如果為函數,則該函數應該只接收一個Match對象,并且返回一個字符串用于替換, count用于指定替換次數。 """ # egg_001: repl為字符串 test_str = "aaaa bbbb cccc,dddd;eeee" pattern = re.compile(r"[,;\s]+") repl_str = "&" matcher = pattern.sub( repl_str, test_str) print(matcher) # aaaa&bbbb&cccc&dddd&eeee# egg_002: repl為函數,設置次數為3 test_str = "aaaa bbbb cccc,dddd;eeee" pattern = re.compile(r"[,;\s]+")def func(m):print("m:", m)return "*"matcher = pattern.sub(func, test_str, 3) print(matcher) # aaaa*bbbb*cccc*dddd;eeee

7.subn方法講解

該方法也是用于替換,說明:返回一個元組,元組有兩個元素,
第一個和使用sub方法返回的結果一致,另一個表示替換的次數。

import re""" subn(repl, string, count=0) 說明:該方法也是用于替換,返回一個元組,元組有兩個元素, 第一個和使用sub方法返回的結果一致,另一個表示替換的次數。 """ # egg_001: repl為字符串 test_str = "aaaa bbbb cccc,dddd;eeee" pattern = re.compile(r"[,;\s]+") repl_str = "&" matcher = pattern.subn(repl_str, test_str) print(matcher) # ('aaaa&bbbb&cccc&dddd&eeee', 4)# egg_002: repl為函數,設置次數為3 test_str = "aaaa bbbb cccc,dddd;eeee" pattern = re.compile(r"[,;\s]+")def func(m):print("m:", m)return "*"matcher = pattern.subn(func, test_str, 3) print(matcher) # ('aaaa*bbbb*cccc*dddd;eeee', 3)

以上是python關于正則表達式的講解之二,后續會繼續更新正則表達式的經典使用案例,有疑問的歡迎評論或私信博主啊。

總結

以上是生活随笔為你收集整理的python——正则表达式详解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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