溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python中re指的是什么

發(fā)布時間:2020-11-21 11:30:29 來源:億速云 閱讀:330 作者:小新 欄目:編程語言

了解python中re指的是什么?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

定義

正則表達(dá)式是一個特殊的字符序列,能方便的檢查一個字符串是否與某種模式匹配。re模塊使得python擁有全部的正則表達(dá)式功能。

用途

通過使用正則表達(dá)式,可以:

測試字符串內(nèi)的模式?!?例如,可以測試輸入字符串,以查看字符串內(nèi)是否出現(xiàn)電話號碼模式或信用卡號碼模式。這稱為數(shù)據(jù)驗證。

替換文本。—— 可以使用正則表達(dá)式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。

基于模式匹配從字符串中提取子字符串。—— 可以查找文檔內(nèi)或輸入域內(nèi)特定的文本。

語法

'.'     匹配所有字符串,除\n以外
'-'     表示范圍[0-9]
'*'     匹配前面的子表達(dá)式零次或多次。要匹配 * 字符,請使用 \*。
'+'     匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請使用 \+
'^'     匹配字符串開頭
'$'     匹配字符串結(jié)尾 re
'\'     轉(zhuǎn)義字符, 使后一個字符改變原來的意思,如果字符串中有字符*需要匹配,可以\*或者字符集[*] 
        re.findall(r'3\*','3*ds')結(jié)['3*']
'*'     匹配前面的字符0次或多次 re.findall("ab*","cabc3abcbbac")結(jié)果:['ab', 'ab', 'a']
'?'     匹配前一個字符串0次或1次 re.findall('ab?','abcabcabcadf')結(jié)果['ab', 'ab', 'ab', 'a']
'{m}'   匹配前一個字符m次 re.findall('cb{1}','bchbchcbfbcbb')結(jié)果['cb', 'cb']
'{n,m}' 匹配前一個字符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'    匹配單詞的詞首和詞尾,單詞被定義為一個字母數(shù)字序列,因此詞尾是用空白符或非字母數(shù)字符來表示的
'\B'    與\b相反,只在當(dāng)前位置不在單詞邊界時匹配
[]      是定義匹配的字符范圍。比如 [a-zA-Z0-9] 表示相應(yīng)位置的字符要匹配英文字符和數(shù)字。[\s*]表示空格或者*號
'(?P<name>...)'  分組,除了原有編號外在指定一個額外的別名 
re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{8})","371481199306143242").groupdict("city") 
結(jié)果{'province': '3714', 'city': '81', 'birthday': '19930614'}

模式

貪婪模式和非貪婪模式

正則表達(dá)式通常使用于查找匹配字符串。python里數(shù)量詞默認(rèn)是貪婪的,總是嘗試匹配盡可能多的字符;非貪婪模式正好相反,總是嘗試匹配盡可能少的字符。

使用方法

在python中默認(rèn)采用的是貪婪模式,使用非貪婪模式的話,只需要在量詞后面直接加上一個問號”?”。 

例子當(dāng)中已經(jīng)匹配到了“ab”時已經(jīng)可以使整個表達(dá)式匹配成功,但是由于采用的是貪婪模式,所以還需要往后繼續(xù)匹配,一直到匹配到最后一個”b”的時候,后面已經(jīng)沒有可以成功匹配的字符串了,匹配結(jié)束。返回匹配結(jié)果“abbbbbb”。 所以,我們可以將貪婪模式理解為:在整個表達(dá)式匹配成功的前提下,盡可能多的匹配。

非貪婪模式也就是將我們例子中的正則表達(dá)式“ab+”改為”ab+?”,當(dāng)匹配到“ab”時,已經(jīng)匹配成功,直接結(jié)束匹配,不在向后繼續(xù)嘗試,返回匹配成功的字符串”ab”。 

所以,我們可以將非貪婪模式理解為:在整個表達(dá)式匹配成功的前提下,盡可能少的匹配。

感謝各位的閱讀!看完上述內(nèi)容,你們對python中re指的是什么大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI