欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么使用Pythonre正則表達(dá)式模塊-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)十年來致力于為客戶提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、成都品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了上千網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。

怎么使用Python re正則表達(dá)式模塊?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

正則表達(dá)式(Regular Expression)用于描述一種字符串匹配的模式,它可用于檢查一個字符串是否含有某個子串,也可用于從字符串中提取匹配的子串,或者對字符串中匹配的子串執(zhí)行替換操作。

很多讀者都會覺得正則表達(dá)式是非常神奇、高級的知識,實(shí)際上正則表達(dá)式確實(shí)是一種非常實(shí)用的工具。正則表達(dá)式的入門并不難,任意字符串都可以被當(dāng)成正則表達(dá)式來使用,例如“abc”,它也是一個正則表達(dá)式,只是它只能匹配“abc”字符串。

當(dāng)然,如果正則表達(dá)式僅能匹配“abc”這樣的字符串,那么正則表達(dá)式也就不值得學(xué)習(xí)了。事實(shí)上,正則表達(dá)式包含的知識點(diǎn)比較多,它的模式匹配能力也非常強(qiáng),初學(xué)者可以由淺入深地學(xué)習(xí)。

對于 Python 開發(fā)者來說,掌握正則表達(dá)式確實(shí)是一個很重要的技能。在掌握了正則表達(dá)式之后,Python 開發(fā)者也可使用正則表達(dá)式來開發(fā)數(shù)據(jù)抓取、網(wǎng)絡(luò)爬蟲等程序。

實(shí)際上,掌握 Python 的正則表達(dá)式并不難,無非就是幾個簡單的函數(shù)。在 Python 的交互式解釋器中先導(dǎo)入 re 模塊,然后輸入 re.__all__ 命令,即可看到該模塊所包含的全部屬性和函數(shù):

>>> re.__all__
['match', 'fullmatch', 'search', 'sub', 'subn', 'split', 'findall', 'finditer', 'compile', 'purge', 'template', 
'escape', 'error', 'A', 'I', 'L', 'M', 'S', 'X', 'U', 'ASCII', 'IGNORECASE', 'LOCALE', 'MULTILINE', 'DOTALL', 
'VERBOSE', 'UNICODE']

從上面的輸出結(jié)果可以看出,re 模塊包含了為數(shù)不多的幾個函數(shù)和屬性(用于控制正則表達(dá)式匹配的幾個選項(xiàng))。下面先介紹這些函數(shù)的作用:

re.compile(pattern, flags=0):該函數(shù)用于將正則表達(dá)式字符串編譯成 _sre.SRE_Pattern 對象,該對象代表了正則表達(dá)式編譯之后在內(nèi)存中的對象,它可以緩存并復(fù)用正則表達(dá)式字符串。如果程序需要多次使用同一個正則表達(dá)式字符串,則可考慮先編譯它。

該函數(shù)的 pattern 參數(shù)就是它所編譯的正則表達(dá)式字符串,flags 則代表了正則表達(dá)式的匹配旗標(biāo)。編譯得到的 _sre.SRE_Pattern 對象包含了 re 模塊中絕大部分函數(shù)對應(yīng)的方法。比如下面兩行代碼表示先編譯正則表達(dá)式,然后調(diào)用正則表達(dá)式的 search() 方法執(zhí)行匹配:

#先編譯正則表達(dá)式
p = re.compile('abc')
#調(diào)用_sre.SRE_Pattern 對象的search()方法
p.search("www.abc.com")

上面兩行代碼和下面代碼的效果基本相同:

#直接用正則表達(dá)式匹配目標(biāo)字符串
re.search('abc','www.abc.com')

對于上面兩種方式,由于第一種方式預(yù)編譯了正則表達(dá)式,因此程序可復(fù)用 p 對象(該對象緩存了正則表達(dá)式字符串),所以具有更好的性能。re.match(pattern, string, flags=0):嘗試從字符串的開始位置來匹配正則表達(dá)式,如果從開始位置匹配不成功,match() 函數(shù)就返回 None 。其中 pattern 參數(shù)代表正則表達(dá)式;string 代表被匹配的字符串;flags 則代表正則表達(dá)式的匹配旗標(biāo)。該函數(shù)返回 _sre.SRE_Match 對象,該對象包含的 span(n) 方法用于獲取第 n+1 個組的匹配位置,group(n) 方法用于獲取第 n+1 個組所匹配的子串。re.search(pattern, string, flags=0):掃描整個字符串,并返回字符串中第一處匹配 pattern 的匹配對象。其中 pattern 參數(shù)代表正則表達(dá)式;string 代表被匹配的字符串;flags 則代表正則表達(dá)式的匹配旗標(biāo)。該函數(shù)也返回 _sre.SRE_Match 對象。
根據(jù)上面介紹不難發(fā)現(xiàn),match() 與 search() 的區(qū)別在于,match() 必須從字符串開始處就匹配,但 search() 可以搜索整個字符串。例如如下程序:

import re
m1 = re.match('www', 'www.fkit.org')# 開始位置可以匹配
print(m1.span())  # span返回匹配的位置
print(m1.group()) # group返回匹配的組
print(re.match('fkit', 'www.fkit.com')) # 開始位置匹配不到,返回None
m2 = re.search('www', 'www.fkit.org') # 開始位置可以匹配
print(m2.span())
print(m2.group())
m3 = re.search('fkit', 'www.fkit.com') # 中間位置可以匹配,返回Match對象
print(m3.span())
print(m3.group())

運(yùn)行上面程序,可以看到如下輸出結(jié)果:

(0, 3)
www
None
(0, 3)
www
(4, 8)
fkit

從上面的輸出結(jié)果可以看出,match() 函數(shù)要求必須從字符串開始處匹配,而 search() 函數(shù)則可掃描整個字符串,從中間任意位置開始匹配。re.findall(pattern, string, flags=0):掃描整個字符串,并返回字符串中所有匹配 pattern 的子串組成的列表。其中 pattern 參數(shù)代表正則表達(dá)式;string 代表被匹配的宇符串;flags 則代表正則表達(dá)式的匹配旗標(biāo)。re.finditer(pattern, string, flags=0):掃描整個字符串,并返回字符串中所有匹配 pattern 的子串組成的迭代器,迭代器的元素是 _sre.SRE_Match 對象。其中 pattern 參數(shù)代表正則表達(dá)式;string 代表被匹配的字符串;flags 則代表正則表達(dá)式的匹配旗標(biāo)。

從上面介紹不難看出,findall() 與 finditer() 函數(shù)的功能基本相似,區(qū)別在于它們的返回值不同,findall() 函數(shù)返回所有匹配 patten 的子串組成的列表;而 finditer() 函數(shù)則返回所有匹配 pattern 的子串組成的選代器。

如果對比 findall()、finditer() 和 search() 函數(shù),它們的區(qū)別也很明顯,search() 只返回字符串中第一處匹配 pattern 的子串;而 findall() 和 finditer() 則返回字符串中所有匹配 pattern 的子串。

import re
# 返回所有匹配pattern的子串組成的列表, 忽略大小寫
print(re.findall('fkit', 'FkIt is very good , Fkit.org is my favorite' , re.I))
# 返回所有匹配pattern的子串組成的迭代器, 忽略大小寫
it = re.finditer('fkit', 'FkIt is very good , Fkit.org is my favorite' , re.I)
for e in it:
    print(str(e.start()) + "-->" + e.group())

re.fullmatch(pattem, string, flags=0):該函數(shù)要求整個字符串能匹配 pattern,如果匹配則返回包含匹配信息的 _sre.SRE_Match 對象;否則返回 None。re.sub(pattern, repl, string, count=0, flags=0):該函數(shù)用于將 string 字符串中所有匹配 pattern 的內(nèi)容替換成 repl;repl 既可是被替換的字符串,也可是一個函數(shù)。count 參數(shù)控制最多替換多少次,如果指定 count 為 0 ,則表示全部首換。如下程序示范了 sub() 函數(shù)的簡單用法:

import re
my_date = '2008-08-18'
# 將my_date字符串里中畫線替換成斜線
print(re.sub(r'-', '/' , my_date))
# 將my_date字符串里中畫線替換成斜線,只替換一次
print(re.sub(r'-', '/' , my_date, 1))

運(yùn)行上面程序,可以看到如下輸出結(jié)果:

2008/08/18
2008/08-18

看完上述內(nèi)容,你們掌握怎么使用Python re正則表達(dá)式模塊的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前題目:怎么使用Pythonre正則表達(dá)式模塊-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://aaarwkj.com/article32/gddpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、定制網(wǎng)站、品牌網(wǎng)站建設(shè)、網(wǎng)站改版、小程序開發(fā)品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
99热视频在线观看免费| 午夜激情在线观看网页| 国产精品亚洲欧美日韩在线播放| 成人性生交大片免费看久久| 欧美伦理片三级在线观看| 亚洲一区二区三区精品电影网| 亚洲乱码中文字幕人妻| 国产精品大屁股白浆一区二区| 日本一区二区三区免费看视频| 国产福利在线观看网站| 亚洲av色男人天堂网| 国产亚洲中文字幕无线乱码 | 狠狠久久五月综合色和啪| 欧美精品黄片免费在线观看| 久久亚洲天堂av丁香| 国产高潮呻吟久久av| 国产精品毛片一区二区三区| 久久夜色噜噜噜av一区| 天堂久久天堂av色综合| 欧美成人精品午夜一区二区| 亚洲精品不卡一二三区| 国产传媒视频在线免费观看| 情五月激情亚洲丁香佳色| 亚洲区一区二区三区精品| 国产成人亚洲精品另类动态| 欧美一区二区大香蕉视频| 人妻中出中文字幕一区| 亚洲欧美日韩在线第三页| 成人国产精品2021| 国产精品一区巨乳人妻| 亚洲黄色片成年人免费观看 | 人妻av一区二区三区| 国产午夜福利不卡在线观看| 日本高清加勒比免费在线| 日韩二区三区在线观看| 中文字幕一区二区三区精彩视频| 欧美日韩一区二区三区久久精品| 日韩精品一区中文字幕在线| 久久婷婷激情亚洲综合色| 亚洲精品紧身裙女教师av| 亚洲国产精品久久久久久99|