正則表達式正則表達式
字符串是編程時涉及到的最多的一種數據結構,對字符串進行操做的需求幾乎無處不在。好比判斷一個字符串是不是合法的Email地址,雖然能夠編程提取@先後的子串,再分別判斷是不是但粗和域名,但這樣作不但麻煩,並且代碼難以複用。編程
正則表達式是一種用來匹配字符串的強有力的武器。它的設計思想是用一種描述性的語言來給字符串定義一個規則,凡是符合規則的字符串,咱們就認爲它"匹配"了,不然,該字符串就是不合法的。數據結構
因此咱們判斷一個字符串是不是合法的Email的方法是:函數
一、建立一個匹配Email的正則表達式;spa
二、用該正則表達式去匹配用戶的輸入來判斷是不是合法設計
由於正則表達式也是用字符串來表示的,因此咱們要先了解如何用字符來描述字符字符串
特殊字符
string
變長字符域名
進階進階
re模塊
因爲Python的字符串自己也用\轉義,因此要特別注意:s=‘asdf\\asdf’
所以咱們強烈建議使用Python的r前綴,就不用考慮轉義的問題了
函數 re.match(re.match嘗試從字符串的起始位置匹配一個模式,若是不是起始位置匹配成功的話,match()就返回none )
re.match(pattern, string, flags=0)
函數 re.search 掃描整個字符串並返回第一個成功的匹配,不然返回None (re.search(pattern, string, flags=0))
函數 re.findall 以列表的形式返回所有能匹配的字串 (re.findall(pattern, string[, flags]))
提取子串 除了簡單地判斷是否匹配以外,正則表達式還有提取子串的強大功能。用()表示的就是要提取的分組
貪婪匹配
正則匹配默認是貪婪匹配,也就是匹配儘量多的字符。
替換
Python的re模塊提供了re.sub用於替換字符串中的匹配項(re.sub(pattern, repl, string, max=0))
正則表達式的修飾符