摘要:正則表達式是一種用來匹配字符串的強有力的武器。正則表達式匹配如果直接給出字符,就是精確匹配。模塊提供模塊,包含所有正則表達式的功能。分組除了簡單地判斷是否匹配之外,正則表達式還有提取子串的強大功能。
正則表達式是一種用來匹配字符串的強有力的武器。它的設計思想是用一種描述性的語言來給字符串定義一個規則,凡是符合規則的字符串,我們就認為它“匹配”了,否則,該字符串就是不合法的。
因為正則表達式也是用字符串表示的,所以,我們要首先了解如何用字符來描述字符。
正則表達式匹配:
如果直接給出字符,就是精確匹配。
d 可以匹配一個數字
w 可以匹配一個字母或數字
. 可以匹配任意字符
要匹配變長的字符,在正則表達式中:
用 * 表示任意個字符(包括0個)
用 + 表示至少一個字符
用 ? 表示0個或1個字符
用 {n} 表示n個字符
用 {n,m} 表示n-m個字符
特殊字符 要用""轉義
正則表達式實例:
實例1:
d{3}s+d{3,8}
d{3} 表示匹配3個數字 例如010
s 匹配一個空格或tab,s+表示至少有一個空格 例如 ‘ ’
d{3,8} 表示3-8個數字,例如‘1234567’
實例2:
‘0574-65972291’
d{4}-d{4,8}
w
正則表達式進階:
要做更精確地匹配,可以用 [ ] 表示范圍
A|B 可以匹配A或B,所以(P|p)ython可以匹配"Python"或者"python"
^表示行的開頭,^d表示必須以數字開頭,$表示行的結束,d$表示必須以數字結束。
re模塊
Python提供re模塊,包含所有正則表達式的功能。由于Python的字符串本身也用 轉義,因此使用Python的r前綴,就不用考慮轉義的問題了。
例如: s = r " ABC-001 "
案例:
match( )方法 判斷是否匹配,如果匹配成功,返回Match對象,否則返回None。
正則切分字符串
用正則表達式切分字符串比用固定的字符更靈活,請看正常的切分代碼
"a b c".split(" ")
["a", "b", "", "", "c"]
re.split(r"s+","a b c")
["a","b","c"]
如果用戶輸入了一組標簽,下次記得用正則表達式來把不規范的輸入轉化成正確的數組。
分組
除了簡單地判斷是否匹配之外,正則表達式還有提取子串的強大功能。用 ( ) 表示的就是要提取的分組(Group)
貪婪匹配
正則匹配默認是貪婪匹配,也就是匹配盡可能多的字符。
由于d+采用貪婪匹配,直接把后面的0全部匹配了,結果0*只能匹配空字符串了。
必須讓d+采用非貪婪匹配(也就是盡可能少匹配),才能把后面的0匹配出來,加個?就可以讓d+采用非貪婪匹配:
編譯
當我們在Python中使用正則表達式時,re模塊內部會干兩件事情:
編譯正則表達式,如果正則表達式的字符串本身不合法,會報錯;
用編譯后的正則表達式去匹配字符串。
如果一個正則表達式要重復使用幾千次,出于效率的考慮,我們可以預編譯該正則表達式,接下來重復使用時就不需要編譯這個步驟了,直接匹配:
編譯后生成Regular Expression對象,由于該對象自己包含了正則表達式,所以調用對應的方法時不用給出正則字符串。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40682.html
摘要:正則表達式關閉或可選標志。如果所含正則表達式,以表示,在當前位置成功匹配時成功,否則失敗。否則指的是八進制字符碼的表達式。 正則表達式是個很牛逼的東西,不管是在javascript,還是在Python web開發(http://www.maiziedu.com/course/python-px...)中,我們都會遇到正則表達式,雖然javascript和Python的正則表達式區別不大...
摘要:反斜杠的困擾與大多數編程語言相同,正則表達式里使用作為轉義字符,這就可能造成反斜杠困擾。文本中正則表達式結束搜索的索引。以元組形式返回全部分組截獲的字符串。用于指定最大分割次數,不指定將全部分割。 1. 正則表達式基礎 1.1. 簡單介紹 正則表達式并不是Python的一部分。正則表達式是用于處理字符串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎,效率上可能不如str自帶的方法...
摘要:今天來給大家分享一份關于比較詳細的正則表達式寶典,學會之后你將對正則表達式達到精通的狀態。正則表達式是用在方法當中,大多數的字符串檢索都可以通過來完成。導入模塊在使用正則表達式之前,需要導入模塊。 ...
摘要:今天就專門看看正則表達式。下面是一個正則表達式最簡單的使用例子。這個例子使用了正則表達式模塊的函數,它會返回所有符合模式的列表。查詢標志讓正則表達式具有不同的行為。,按給定正則表達式分割字符串。,正則表達式中捕獲組的數量。 最近研究Python爬蟲,很多地方用到了正則表達式,但是沒好好研究,每次都得現查文檔。今天就專門看看Python正則表達式。本文參考了官方文檔 re模塊。 模式 首...
摘要:正則表達式語法字符與字符類特殊字符以上特殊字符要想使用字面值,必須使用進行轉義字符類包含在中的一個或者多個字符被稱為字符類,字符類在匹配時如果沒有指定量詞則只會匹配其中的一個。 1. 正則表達式語法 1.1 字符與字符類 1 特殊字符:.^$?+*{}| 以上特殊字符要想使用字面值,必須使用進行轉義 2 字符類 1. 包含在[]中的一個或者多個字符被稱為字符類,字符類在匹配時如果沒有指...
閱讀 1998·2021-11-22 19:20
閱讀 2644·2021-11-22 13:54
閱讀 1976·2021-09-04 16:40
閱讀 1830·2021-08-13 11:54
閱讀 2676·2019-08-30 15:55
閱讀 3470·2019-08-29 13:51
閱讀 532·2019-08-29 11:09
閱讀 3013·2019-08-26 14:06