正則表達式的方法及其匹配規則


正則表達式,是為了方便的查詢字符串中的各項數據而設定的匹配規則

使用正則表達式需要導入re模塊

常用的匹配規則如下:

# 實例    描述
# .    匹配除 "\n" 之外的任何單個字符。要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式。
# \d   匹配一個數字字符。等價於 [0-9]。
# \D   匹配一個非數字字符。等價於 [^0-9]。
# \s   匹配任何空白字符,包括空格、制表符、換頁符等等。等價於 [ \f\n\r\t\v]。
# \S   匹配任何非空白字符。等價於 [^ \f\n\r\t\v]。
# \w   匹配包括下划線的任何單詞字符。等價於'[A-Za-z0-9_]'。
# \W   匹配任何非單詞字符。等價於 '[^A-Za-z0-9_]'。

# 實例   描述
# [Pp]ython    匹配 "Python" 或 "python"
# rub[ye]  匹配 "ruby" 或 "rube"
# [aeiou]  匹配中括號內的任意一個字母
# [0-9]    匹配任何數字。類似於 [0123456789]
# [a-z]    匹配任何小寫字母
# [A-Z]    匹配任何大寫字母
# [a-zA-Z0-9]  匹配任何字母及數字
# [^aeiou] 除了aeiou字母以外的所有字符
# [^0-9]   匹配除了數字外的字符

正則表達式常用的五種操作方法如下:

  import re
1
#re.match(pattern,string) #從頭匹配,如果第一個字符非數字,則無法匹配到 2 m=re.match("\d+","123ads344dsffdf") 3 if m: 4 print("match:",m.group()) 5 #re.search(pattern,string) #匹配整個字符串,直到找到一個匹配 6 m=re.search("\d+","dsadsads32324dsa777dsd") 7 if m: 8 print("search:",m.group()) 9 #re.spilt() #將匹配到的格式當做分割點對字符串分割成列表,例如下列例子中用數字拆分 10 m=re.split("\d","alex1rain2jack3eric4helen") 11 print("使用正則表達式分割字符串:",m) 12 #re.findall() #找到所有要匹配的字符並返回列表格式 13 m=re.findall("\d","alex1rain2jack3eric4helen") 14 print("找出所有的數字:",m) 15 #re.sub(pattern,repl,string,count,flag) #替換匹配到的字符 16 m=re.sub("\d","|","alex1rain2jack3eric4helen") 17 print("替換所有:",m) 18 19 m=re.sub("\d","|","alex1rain2jack3eric4helen",count=2) 20 print("替換兩個:",m)

常用的幾種格式的匹配

 1 #正則表達式含義:(1)代表所有手機號均是1開頭,【3,5,8】表示第二位為這三者之一,后面緊跟九個數字,因為手機號11位
 2 m=re.search("(1)([358]\d{9})",phone_str)
 3 if m:
 4     print("匹配到的手機號是:",m.group())
 5 
 6 #匹配IPV4地址
 7 ip_addr = "inet 192.168.60.223 netmask 0xffffff00 broadcast 192.168.60.255"
 8 m=re.search("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip_addr)
 9 if m:
10     print("匹配到的IP地址是:",m.group())
11 
12 #匹配email
13 email = "alEx.li@126.com   http://www.oldboyedu.com"
14 #正則表達式含義:[0-9.a-zA-Z]{0,26}表示長度最長為26,包含點的郵箱名;[0-9.a-z]{0,20}郵箱域名匹配;.[0-9a-z]{0,8}后綴判斷
15 m=re.search(r"[0-9.a-zA-Z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}",email)
16 if m:
17     print("Email:",m.group())

 匹配電話號碼,帶區號

1 #匹配電話號碼,類似010-11223344 或者0371-99999999
2 telphone_str="hello,0371-60668888,world,welcome !!!"
3 m=re.search(r"\(?0\d{2,3}[) -]?\d{7,8}",telphone_str)
4 print("電話號碼為:",m.group())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM