了解python中re指的是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
定義
正則表達式是一個特殊的字符序列,能方便的檢查一個字符串是否與某種模式匹配。re模塊使得python擁有全部的正則表達式功能。
用途
通過使用正則表達式,可以:
測試字符串內的模式?!?例如,可以測試輸入字符串,以查看字符串內是否出現電話號碼模式或信用卡號碼模式。這稱為數據驗證。
替換文本?!?可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。
基于模式匹配從字符串中提取子字符串?!?可以查找文檔內或輸入域內特定的文本。
語法
'.' 匹配所有字符串,除\n以外
'-' 表示范圍[0-9]
'*' 匹配前面的子表達式零次或多次。要匹配 * 字符,請使用 \*。
'+' 匹配前面的子表達式一次或多次。要匹配 + 字符,請使用 \+
'^' 匹配字符串開頭
'$' 匹配字符串結尾 re
'\' 轉義字符, 使后一個字符改變原來的意思,如果字符串中有字符*需要匹配,可以\*或者字符集[*]
re.findall(r'3\*','3*ds')結['3*']
'*' 匹配前面的字符0次或多次 re.findall("ab*","cabc3abcbbac")結果:['ab', 'ab', 'a']
'?' 匹配前一個字符串0次或1次 re.findall('ab?','abcabcabcadf')結果['ab', 'ab', 'ab', 'a']
'{m}' 匹配前一個字符m次 re.findall('cb{1}','bchbchcbfbcbb')結果['cb', 'cb']
'{n,m}' 匹配前一個字符n到m次 re.findall('cb{2,3}','bchbchcbfbcbb')結果['cbb']
'\d' 匹配數字,等于[0-9] re.findall('\d','電話:10086')結果['1', '0', '0', '8', '6']
'\D' 匹配非數字,等于[^0-9] re.findall('\D','電話:10086')結果['電', '話', ':']
'\w' 匹配字母和數字,等于[A-Za-z0-9] re.findall('\w','alex123,./;;;')結果['a', 'l', 'e', 'x', '1', '2', '3']
'\W' 匹配非英文字母和數字,等于[^A-Za-z0-9] re.findall('\W','alex123,./;;;')結果[',', '.', '/', ';', ';', ';']
'\s' 匹配空白字符 re.findall('\s','3*ds \t\n')結果[' ', '\t', '\n']
'\S' 匹配非空白字符 re.findall('\s','3*ds \t\n')結果['3', '*', 'd', 's']
'\A' 匹配字符串開頭
'\Z' 匹配字符串結尾
'\b' 匹配單詞的詞首和詞尾,單詞被定義為一個字母數字序列,因此詞尾是用空白符或非字母數字符來表示的
'\B' 與\b相反,只在當前位置不在單詞邊界時匹配
[] 是定義匹配的字符范圍。比如 [a-zA-Z0-9] 表示相應位置的字符要匹配英文字符和數字。[\s*]表示空格或者*號
'(?P<name>...)' 分組,除了原有編號外在指定一個額外的別名
re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{8})","371481199306143242").groupdict("city")
結果{'province': '3714', 'city': '81', 'birthday': '19930614'}模式
貪婪模式和非貪婪模式
正則表達式通常使用于查找匹配字符串。python里數量詞默認是貪婪的,總是嘗試匹配盡可能多的字符;非貪婪模式正好相反,總是嘗試匹配盡可能少的字符。
使用方法
在python中默認采用的是貪婪模式,使用非貪婪模式的話,只需要在量詞后面直接加上一個問號”?”。
例子當中已經匹配到了“ab”時已經可以使整個表達式匹配成功,但是由于采用的是貪婪模式,所以還需要往后繼續匹配,一直到匹配到最后一個”b”的時候,后面已經沒有可以成功匹配的字符串了,匹配結束。返回匹配結果“abbbbbb”。 所以,我們可以將貪婪模式理解為:在整個表達式匹配成功的前提下,盡可能多的匹配。
非貪婪模式也就是將我們例子中的正則表達式“ab+”改為”ab+?”,當匹配到“ab”時,已經匹配成功,直接結束匹配,不在向后繼續嘗試,返回匹配成功的字符串”ab”。
所以,我們可以將非貪婪模式理解為:在整個表達式匹配成功的前提下,盡可能少的匹配。
感謝各位的閱讀!看完上述內容,你們對python中re指的是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。