今日內容
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])?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/183066.html
標籤:Python
