今日內容 1、mro演算法和super super()表示執行父類的方法。 2、正則表達式和re模塊 1. re模塊本身只是用來操作正則表達式。 (1)正則表達式 匹配字元串 表單驗證 爬蟲 (4)正則表達式規則(元字元,量詞) 3、量詞 ...
今日內容
1、mro演算法和super
super()表示執行父類的方法。
2、正則表達式和re模塊
- re模塊本身只是用來操作正則表達式。
(1)正則表達式
- 匹配字元串
- 一個人的電話號碼
- 一個人的身份證號
- 一臺機器的ip地址
- 表單驗證
驗證用戶輸入的信息是否合法。
如:11位全數字1開頭,第二個數字是3-9數字。
- 爬蟲
從網頁源碼中獲取一些鏈接、重要的數據。
(4)正則表達式規則(元字元,量詞)
http://tool.chinaz.com/regex/,正則表達式測試。
第一條規則:本身是哪個字元,就匹配字元串中哪個字元。
第二條規則:字元組【字元1字元2】,一個字元組就是代表匹配一個字元,只要這個字元出現在字元組裡,那麼就說明這個字元能匹配。
字元組中還可以使用範圍,所有的範圍都必須遵循ascii從小到大。
【0-9】,【a-z】,[A-Z],[A-z],[a-zA-Z]#匹配所有大小寫,[0-9X]#匹配0-9和x。
[0-9],等價\d,\是轉義符,轉義符轉義了d,讓d能夠匹配所有0-9之間的數字。
\w:表示大小寫字母,數字,下劃線
\s:表示空白,空格,換行符,製表符
\t:匹配製表符
\n:匹配換行符
\D:表示所有非數字
\W:表示除數字、字母、下劃線之外的所有字元
\S:表示非空白
#\d(digit),\w(word),\s(space),\t(table),\n(next)
#.(點)表示除了換行符之外任意內容。
#[],[^],尖角號表示非。
#[]字元組:只要在中括弧內的所有字元都是符合規則的字元。
#[^]非字元組:只要在中括弧內的所有字元都是不符合規則的字元
#[],[^],^表示一個字元的開始;$表示一個字元的結束。
#^xxx$:匹配xxx內容
#| :表示或,註意兩個規則有重疊部分,總是長的在前面,短的在後面。
#()表示組,將一部分正則歸為一組。|這個符合的作用域就縮小了。
#(),|或的符號,匹配兩邊所有的內容。如果限制匹配範圍,使用括弧()。
#匹配點的時候,需要使用\轉義符號,取消.點的特殊含義(除換行符之外所有內容)
#【\d】,【0-9】,\d,沒區別,都是匹配一位數字。
#[\d\D],[\w\W],[\S\s]匹配所有一切字元
3、量詞
{n}:表示出現n次;1[3-9]\d{9}
{n,}表示出現至少n次
{n,m}表示出現n-m次
?:表示匹配0次或者1次
+:表示1次或者多次
*:表示匹配0次或者多次
#匹配兩個整數:\d{2}
#匹配兩位小數:\n+\.\d{2}
#匹配一個整數或者小數:
方法1:\d+\.\d+|\d+;
方法2:\d+\.?\d*
方法3:\d+(\.\d+)?
#表示可有可無的使用(?),比如此處的小數點。
#表示可有可無(*),但是可以有多個,比如小數點後n位。
預設貪婪匹配,總是會在符號量詞條件的範圍內儘量多匹配。
#\d{7,12}
# <html>adljdkjsljdlj</html>lhaljaln
#<.+>,匹配上述的內容為:<html>adljdkjsljdlj</html>,解釋:回溯演算法,匹配第一個<,.+匹配任意內容,到最後,從最後向前回溯至倒數第一個>。這裡面體現了py的貪婪匹配原則。
非貪婪匹配:惰性匹配
總是匹配符合條件範圍內儘量小的字元串。?,問好
如:\d{2,3}?,這裡就是取兩個數字。
如:\d+?3,這裡遇到3匹配。
元字元 量詞 ? x(任意內容)
表示按照元字元規則在量詞範圍內匹配,一旦遇到x就停止。
常用:.*?x,匹配任意的內容,任意多次,遇到x就停止。
#元字元
#元字元量詞
#元字元量詞?,非貪婪
#\d+?x,.*?x#(這裡的+,*,表示量詞)
案例:
# 身份證號
# 15位 全數字 首位不為0
# 18位 前17位全數字 首位不為0 最後一位可能是x和數字
[1-9](\d{16}(\d|x)|\d{14})
[1-9](\d{16}[\dx]|\d{14})
[1-9]\d{14}(\d{2}[\dx])?