正则表达式,是为了方便的查询字符串中的各项数据而设定的匹配规则
使用正则表达式需要导入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())