正則可以代替其他任何工具,但是其他工具不能完全代替正則.
1.匹配或提取字串的工具,基於所有語言之上的工具.
正規表示式所面向的問題
判斷乙個字串是否匹配給定的格式,如判斷使用者註冊賬號是否滿足格式.
從乙個字串中按指定格式提取資訊.抓取頁面中的鏈結.
判斷使用者提交的郵箱的格式是否正確:
乙個或多個字母或數字@乙個或多個字母或數字.com,r'^[a-za-z0-9]+@[a-za-z0-9]+\ . com$'
import re #導包
res = re.findall(r'^[a-za-z0-9]+@[a-za-z0-9]+ \ . com$','[email protected]') #能匹配的轉化為列表專案.
注意:如果正規表示式中使用了括號,那麼findall函式匹配的結果只會是括號中的內容,而不是完整的匹配.
因此我們可以利用這種機制來完成對需要部分資料的提取.
乙個函式:re.findall(pattern,string)#
mymail = re.findall(r'aaa',mystr) #第乙個引數是正規表示式,第二個引數是要查詢的字串內容.
本身具有特殊含義的字元:
^脫字元
一些元字元: . * ? + [ ] () \ ^ $
通過 \ 轉義來匹配這些字元本身.
寫正則的規則不要隨便加空格
\ 轉義符,轉義正規表示式的規則
r 轉義的python字串,需要兩層轉義.
通過()來改變findall的行為
. 點代表任意乙個字,強制佔位,必須有乙個字元.
錨點元字元
功能鎖定行首,^位置放在行首
功能鎖定行尾 $ 位置放在行尾
單詞邊界(不是元字元): \b
a = 'hello world i am abcd today i say helloworld'
mymail = re.findall(r'\bhello\b',a)#只匹配到乙個hello,因為後面的hello在單詞中.
大括號{}來控制次數,修飾前面的字元.
a = 'abbbbbbbbc'
mymail = re.findall(r'abc') , 表示前面的b有8個, 表示可以匹配2到8個之間.表示後面2到正無窮.前面不寫表示最多8個,即0-8個.包括空字元(其實是其他字元的位置)也會匹配.不要在{}中隨意加空格.
[0-9]表示數字0到9
除此之外還有三個比較特殊的代表次數的 * + ?
mymail = re.findall(r'',str)
*代表 0 到正無窮 ,修飾前面的字元規則
+代表1到正無窮.
?代表不能多於乙個,如果多於乙個就匹配不到.
n個m~n個:
至少m個
加問號變成非貪婪模式,盡可能少的去匹配字元.
非貪婪:在元字元後面加乙個?,就可以變成非貪婪模式. 與在規則後面加問號不同.
任意多個:*?
乙個或多個:+?
乙個或沒有: ??
規則+元字元+貪婪
mystr = 'abbbb'
mymail = re.findall(r'ab*?',mystr)
[abc],整個中括號相當於乙個字元,查詢其中的乙個,乙個乙個位置分開匹配.兩個中括號相當於2個字元.
[0-9],用大括號來控制次數.表示3個數字.
[a-za-z0-9]表示大小寫加數字,可表示郵箱或者首字母的命名規範.
不可以隨意加逗號,只有在大括號{}表示區間的時候加逗號.
如果脫字元^寫在字元組外面,代表鎖定行首
如果寫在字元組裡面,代表反向字元類,(即 除括號內字元之外)
字元組[...]反向字元類:...
有一對(),代表只會提取括號裡面的內容.括號外面的當作乙個標記
轉義\,取消某些特殊字元的含義,讓其變成普通字元.
mymail = re.findall(r'href = "(.*?)"',mystr),括號代表只提取括號裡面的內容,外面的只是標記.
還有re.match,代表從開頭開始匹配.
re.search ,代表任意位置只匹配乙個,找不到就返回none,只匹配第乙個
re.sub 替換, re.sub(r'href', 'haha', mystr),比字串的replace好用.原本的字串替換成新的字串.
\d \d 任意數字\非數字字元組
\s \s任一空白,非空白字元
\w \w 任一字母數字\非字母數字字元
記法:上下左右除去a.
Python基礎知識 正則
import re str4 r id w w w s re.match str4,id 3aea5f99 6797 48bc 8b62 767a16d748c1 print s,type s if str s none print 1 else print 2 python正則寫法 1 匯入re ...
Python基礎知識 1 4互動模式
前面我們通過pycharm這款ide軟體,能夠編寫 還能夠執行 感覺非常的好,用起來也很舒服簡單 但有很多時候我們想快速的執行乙個python的小段 此時如果還是通過pycharm那種建立專案 寫 執行 的方式有些繁瑣 此時改怎樣辦呢?答 python的互動模式 所以互動模式,說的直白點,就是通過終...
正則基礎知識
g 全域性匹配 i 忽略大小寫 gi 以上組合 匹配乙個輸入或一行的開頭,a 匹配 an a 而不匹配 an a 匹配乙個輸入或一行的結尾,a 匹配 an a 而不匹配 an a 匹配前面元字元0次或多次,ba 將匹配b,ba,baa,baaa 匹配前面元字元1次或多次,ba 將匹配ba,baa,b...