新聞中心
定義

堆龍德慶網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
正則表達(dá)式是一個(gè)特殊的字符序列,能方便的檢查一個(gè)字符串是否與某種模式匹配。re模塊使得python擁有全部的正則表達(dá)式功能。
用途
通過使用正則表達(dá)式,可以:
測試字符串內(nèi)的模式。—— 例如,可以測試輸入字符串,以查看字符串內(nèi)是否出現(xiàn)電話號(hào)碼模式或信用卡號(hào)碼模式。這稱為數(shù)據(jù)驗(yàn)證。
替換文本。—— 可以使用正則表達(dá)式來識(shí)別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。
基于模式匹配從字符串中提取子字符串?!?可以查找文檔內(nèi)或輸入域內(nèi)特定的文本。
語法
'.' 匹配所有字符串,除\n以外
'-' 表示范圍[0-9]
'*' 匹配前面的子表達(dá)式零次或多次。要匹配 * 字符,請(qǐng)使用 \*。
'+' 匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請(qǐng)使用 \+
'^' 匹配字符串開頭
'$' 匹配字符串結(jié)尾 re
'\' 轉(zhuǎn)義字符, 使后一個(gè)字符改變?cè)瓉淼囊馑迹绻址杏凶址?需要匹配,可以\*或者字符集[*]
re.findall(r'3\*','3*ds')結(jié)['3*']
'*' 匹配前面的字符0次或多次 re.findall("ab*","cabc3abcbbac")結(jié)果:['ab', 'ab', 'a']
'?' 匹配前一個(gè)字符串0次或1次 re.findall('ab?','abcabcabcadf')結(jié)果['ab', 'ab', 'ab', 'a']
'{m}' 匹配前一個(gè)字符m次 re.findall('cb{1}','bchbchcbfbcbb')結(jié)果['cb', 'cb']
'{n,m}' 匹配前一個(gè)字符n到m次 re.findall('cb{2,3}','bchbchcbfbcbb')結(jié)果['cbb']
'\d' 匹配數(shù)字,等于[0-9] re.findall('\d','電話:10086')結(jié)果['1', '0', '0', '8', '6']
'\D' 匹配非數(shù)字,等于[^0-9] re.findall('\D','電話:10086')結(jié)果['電', '話', ':']
'\w' 匹配字母和數(shù)字,等于[A-Za-z0-9] re.findall('\w','alex123,./;;;')結(jié)果['a', 'l', 'e', 'x', '1', '2', '3']
'\W' 匹配非英文字母和數(shù)字,等于[^A-Za-z0-9] re.findall('\W','alex123,./;;;')結(jié)果[',', '.', '/', ';', ';', ';']
'\s' 匹配空白字符 re.findall('\s','3*ds \t\n')結(jié)果[' ', '\t', '\n']
'\S' 匹配非空白字符 re.findall('\s','3*ds \t\n')結(jié)果['3', '*', 'd', 's']
'\A' 匹配字符串開頭
'\Z' 匹配字符串結(jié)尾
'\b' 匹配單詞的詞首和詞尾,單詞被定義為一個(gè)字母數(shù)字序列,因此詞尾是用空白符或非字母數(shù)字符來表示的
'\B' 與\b相反,只在當(dāng)前位置不在單詞邊界時(shí)匹配
[] 是定義匹配的字符范圍。比如 [a-zA-Z0-9] 表示相應(yīng)位置的字符要匹配英文字符和數(shù)字。[\s*]表示空格或者*號(hào)
'(?P...)' 分組,除了原有編號(hào)外在指定一個(gè)額外的別名
re.search("(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{8})","371481199306143242").groupdict("city")
結(jié)果{'province': '3714', 'city': '81', 'birthday': '19930614'} 模式
貪婪模式和非貪婪模式
正則表達(dá)式通常使用于查找匹配字符串。python里數(shù)量詞默認(rèn)是貪婪的,總是嘗試匹配盡可能多的字符;非貪婪模式正好相反,總是嘗試匹配盡可能少的字符。
使用方法
在python中默認(rèn)采用的是貪婪模式,使用非貪婪模式的話,只需要在量詞后面直接加上一個(gè)問號(hào)”?”。
例子當(dāng)中已經(jīng)匹配到了“ab”時(shí)已經(jīng)可以使整個(gè)表達(dá)式匹配成功,但是由于采用的是貪婪模式,所以還需要往后繼續(xù)匹配,一直到匹配到最后一個(gè)”b”的時(shí)候,后面已經(jīng)沒有可以成功匹配的字符串了,匹配結(jié)束。返回匹配結(jié)果“abbbbbb”。 所以,我們可以將貪婪模式理解為:在整個(gè)表達(dá)式匹配成功的前提下,盡可能多的匹配。
非貪婪模式也就是將我們例子中的正則表達(dá)式“ab+”改為”ab+?”,當(dāng)匹配到“ab”時(shí),已經(jīng)匹配成功,直接結(jié)束匹配,不在向后繼續(xù)嘗試,返回匹配成功的字符串”ab”。
所以,我們可以將非貪婪模式理解為:在整個(gè)表達(dá)式匹配成功的前提下,盡可能少的匹配。
分享名稱:創(chuàng)新互聯(lián)Python教程:python里的re是什么
地址分享:http://www.dlmjj.cn/article/dpshjso.html


咨詢
建站咨詢
