1. 程式人生 > 實用技巧 >Python基礎入門知識點——運算子

Python基礎入門知識點——運算子

import re

# 1.match從起始位置開始匹配
text = 'python'
res = re.match("py",text)
print(res.group())

#2 .匹配一個任意字元,無法匹配\n換行符號
text2 = "點python"
res2 = re.match('.',text2)
print(res2.group())

#3. \d 只匹配數字
text3= '25python'
res3 = re.match('\d',text3)
# 等價  \d === [0-9]
res3 = re.match('[0-9]',text3)
print(res3.group())

# 4. \D 除了數字以外都匹配 text4 = 'D25python' res4 = re.match('\D',text4) # 等價 \D === [^0-9] print(res4.group()) # 匹配所有字元 ree = re.match('[\d\D]+',text4) print('27', ree.group()) # 5. \s 匹配空白字元 如\n \t \s 空格 text5 = '\tpython' res5 = re.match('\s',text5) print(res5.group()) # 6. \w 匹配大小寫字母、數字、下劃線 text6 = '
_7python' res6 = re.match('\w', text6) print(res6.group()) # 7. \W 和 \w互補 text6 = '*7python' res6 = re.match('\W', text6) # 等價 \W === [^0-9a-zA-Z] res6 = re.match('[^0-9a-zA-Z]',text6) print(res6.group()) # 8. [] 匹配中括號裡面的字元,多內容匹配時,“或”運算思想 ,只要物件中含有一個內容就匹配一次 # /s是空格 text6 = '& 7python' res6
= re.match('[&/s7]', text6) print(res6.group()) # 9. * 號 匹配零個或多個字元,符合規則就一直往後匹配,直到不符合規則。如果第一個就不符合就匹配0次,返回none,且不報錯 texts = '18183-9000-9000' ress = re.match('[- \d]*', texts) print(ress.group()) # 10. + 匹配一個或多個, 至少匹配一個,不符合規則會報錯 texts = '18183-9000-9000' ress = re.match('[\d]+', texts) print(ress.group()) # 11. ? 匹配零個或一個 texts = '18183-9000-9000' ress = re.match('[- \d]?', texts) print(ress.group()) # 12. {n} 匹配n次 texts = '18183-9000-9000' ress = re.match('[- \d]{6}', texts) print(ress.group()) # 13. {m,n} 匹配m到n次,預設匹配最多次,m是保底,n是極限,匹配不到m次會報錯 texts = '181-9|000-9000' ress = re.match('[- \d]{2,6}', texts) print(ress.group()) # 匹配所有字元 ree = re.match('[\d\D]+',text4) print('27', ree.group()) # 匹配任意字元 [.]表示只匹配真實的點.本身 reee = re.match('.+',text) print(reee.group()) # 電話號碼 第一位是1,第二位是3-9,一共11位 tel = "13689759284" re_tel = re.match('1[3-9][0-9]{9}',tel) print(re_tel.group()) # 郵箱匹配 mail = '[email protected]' re_mail = re.match('\w+@[0-9a-z]+[.][comcn]+',mail) print(re_mail.group()) # 14. search 從左往右匹配,返回第一個匹配結果 txt = "pythonpyy" rs = re.search('pyy',txt) print(rs.group()) # 15. ^在中括號裡面,表示取反,在外面表示以什麼字元開頭 txt = "pythonpy" rs = re.search('^pyt',txt) print(rs.group()) # 16. $ 以特定的字串為結尾 txt = "pythonpyy" rs = re.search('pyy$',txt) print(rs.group()) # 17. | ‘或’ 匹配多個表示式或者字串 [|]認為裡面是單個字元,匹配一次 (|)認為裡面是一個長度的字串 txt = "https://www.bilibili.com/video/" rs = re.search('[http|https|ftp|file|video]',txt) # 單字元匹配一次 print(rs.group()) rs = re.search('[http|https|ftp|file|video]+',txt) # 匹配多次 print(rs.group()) rs = re.search('(http|https|ftp|file|video)+',txt) # 匹配多次 print(rs.group()) # 18. 貪婪模式和非貪婪模式 預設就是貪婪模式>=1 非貪婪模式 <=1 使用?實現 txt = ''' <tr class="host"> <tr class='1'>host1</tr> <tr class='2'>host2</tr> <tr class='3'>host3</tr> <tr class='4'>host4</tr> <tr class='5'>host5</tr> <tr class='6'>爬蟲</tr> </tr> ''' # 獲取<tr class='host> # 貪婪模式 rr = re.match('\n<tr[\d\D]+>',txt) print(rr.group()) # 非貪婪模式 # 簡單理解就是第一次遇到 ? 後面的字元就停下來 rr = re.match('\n<tr[\d\D]+?>',txt) print(rr.group())