正则表达式的⽅法及其匹配规则正则表达式,是为了⽅便的查询字符串中的各项数据⽽设定的匹配规则
使⽤正则表达式需要导⼊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")
3if m:
4print("match:",m.group())
5#re.search(pattern,string) #匹配整个字符串,直到到⼀个匹配
6 m=re.search("\d+","dsadsads32324dsa777dsd")
7if m:
8print("search:",m.group())
9#re.spilt() #将匹配到的格式当做分割点对字符串分割成列表,例如下列例⼦中⽤数字拆分
10 m=re.split("\d","alex1rain2jack3eric4helen")
11print("使⽤正则表达式分割字符串:",m)
12#re.findall() #到所有要匹配的字符并返回列表格式
13 m=re.findall("\d","alex1rain2jack3eric4helen")
14print("出所有的数字:",m)
15#re.sub(pattern,repl,string,count,flag) #替换匹配到的字符
16 m=re.sub("\d","|","alex1rain2jack3eric4helen")
17print("替换所有:",m)
18
19 m=re.sub("\d","|","alex1rain2jack3eric4helen",count=2)
20print("替换两个:",m)
常⽤的⼏种格式的匹配
1#正则表达式含义:(1)代表所有⼿机号均是1开头,【3,5,8】表⽰第⼆位为这三者之⼀,后⾯紧跟九个数字,因为⼿机号11位 2 m=re.search("(1)([358]\d{9})",phone_str)
3if m:
4print("匹配到的⼿机号是:",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)
9if m:
10print("匹配到的IP地址是:",m.group())
11
12#匹配email
13 email = "alEx.li@126 www.oldboyedu"
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)
16if m:
17print("Email:",m.group())
匹配电话号码,带区号
1#匹配电话号码,类似010-******** 或者0371-********
2 telphone_str="hello,0371-********,world,welcome !!!"
3 m=re.search(r"\(?0\d{2,3}[) -]?\d{7,8}",telphone_str)
4print("电话号码为:",m.group())
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论