python基礎知識14 正規表示式

2022-08-30 03:12:07 字數 2253 閱讀 5305

正則可以代替其他任何工具,但是其他工具不能完全代替正則.

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...