标签:形式 次数 tin 空格 搜索 大小写 sea 开始 ups
```import re
‘.‘ 默认匹配除\n之外的任意一个字符,若指定flagDOTALL, 则匹配任意字符,包括换行
‘^‘ 匹配字符开头,若指定flagsMULTILINE, 这种也可以匹配上(r"^a", "\nabc\neee", flags=re.MULTILINE)(效果和“\A”相同)
‘$‘ 匹配字符结尾,或e.search("foo$", "bfoo\nsdfsf", flags=re.MULTILINE).group()也可以
“*” 匹配 * 号前的字符0次或多次,re.findall("ab*", "cabb3abcbbac")结果为[‘abb‘, ‘ab‘, ‘a‘]
‘+‘ 匹配前一个字符1次或多次,re.findall("ab+", "ab+cd+abb+bba")结果[‘ab‘, ‘abb‘]
‘?‘ 匹配前一个字符1次或0次
‘{m}‘ 匹配前一个字符m次
‘{n,m}‘ 匹配前一个字符n到m次,re.findall("ab{1,3}", "abb abc abbcbbb")结果‘abb‘, ‘ab‘, ‘abb‘]
‘|‘ 匹配 | 左或 | 右的字符,re.search("abc|ABC", "ABCBabcCD").group()结果‘ABC‘
‘(...)‘ 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group()结果abcabca456c
‘\A‘ 只从字符开头匹配,re.search("\Aabc", "alexabc")是匹配不到的
‘\Z‘ 匹配字符结尾,同$
‘\d‘ 匹配数字0 - 9
‘\D‘ 匹配非数字
‘\w‘ 匹配[A - Za - z0 - 9]
‘\W‘ 匹配非[A - Za - z0 - 9]
‘s‘ 匹配空白字符、\t、\n、\r, re.search("\s+", "ab\tc1\n3").group()结果‘\t‘
‘(?P<name>...)‘ 分组匹配re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})", "371481199306143242").groupdict("city")
#结果{‘province‘: ‘3714‘, ‘city‘: ‘81‘, ‘birthday‘: ‘1993‘}
#match是从头开始匹配是不常用型,search是从整个字符串里搜索是常用型
a=re.match(‘.‘,"inet 地址:192.168.12.55 广播192.168.12.255") #match就是匹配字符串开头和“^”作用相同
print(a.group())#默认匹配除\n之外的任意一个字符,结果为i
a=re.match(‘.+‘,"inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group()) #匹配‘.‘1次或者多次,结果为"inet 地址:192.168.12.55 广播192.168.12.255"
a=re.match(‘\w*‘,"!inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group())# "*"没匹配到也有返回,不会报错。a的值为‘‘(* 匹配0次或者多次)
print(a)#
a=re.match(‘\w+‘,"!inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group()) #没匹配到会报错(+ 匹配1次或者多次)
a=re.match(‘\w?‘,"!inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group()) #没匹配到也有返回,不会报错。a的值为‘‘(? 匹配0次或者1次)
print(a)
a=re.match(‘\w{3}‘,"inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group())#匹配前一个字符5次,如果匹配不到会报错
print(a)
a=re.match(‘\w{5,10}‘,"inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group())#匹配前一个字符5到10次,如果最低的次数匹配不到会报错。
print(a)
a=re.match(‘INET|inet‘,"inetINET 地址:192.168.12.55 广播192.168.12.255")
print(a.group()) #从字符串左边开始匹配。只要匹配到就会返回。
a=re.match(‘inet2|INET‘,"inet 地址:192.168.12.55 广播192.168.12.255")
#print(a.group()) #匹配不到会报错
print(a)
a=re.match(‘inet2|INET‘,"INETinet2 地址:192.168.12.55 广播192.168.12.255")
print(a.group())# 从字符串左边开始匹配。只要匹配到就会返回。
a=re.search("(\d{2})(\d{2})(\d{4})","320495688305618974 name:ooxx")
print(a.group()) #直接输出32049568
print(a.groups()) #分组输出(‘32‘, ‘04‘, ‘9568‘)元组
a=re.search("\A32","320495688305618974 name:ooxx")
print(a.group()) #效果和‘^‘相同
a=re.search("\A\d.*$","320495688305618974 name:ooxx")
print(a.group()) #‘$‘效果和‘\Z‘相同
a=re.search("\A\d.*\Z","320495688305618974 name:ooxx")
print(a.group()) #‘$‘效果和‘\Z‘相同
a=re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})", "371481199306143242").groupdict() #"groupdict()"生成字典
print(a) #“groupdict()”生成字典,“P<city>”是起了一个名字
# match(从字符串开头开始匹配)
a=re.match(‘.‘,"inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group()) #group结果为字符串
# 复杂search匹配(整个字符串匹配)
a=re.search(‘(\d{1,3}\.){3}\d{1,3}‘,"inet 地址:192.168.12.55 广播192.168.12.255")
print(a.group())#“(\d{1,3}\.){3}”是匹配“(\d{1,3}\.)”3次
# findall(把匹配到的全部取出)
a=re.findall("[a-zA-Z]+","1q2w1eqwe4qw5eq3we1q5we4q")
print(a) # 把所有英文字母以列表形式取出来
a=re.findall("\D+","1q2w1eqwe\n4qw5eq3we1q5we4q")
print(a) # 把所有不是数字的以列表形式取出来[‘q‘, ‘w‘, ‘eqwe\n‘, ‘qw‘, ‘eq‘, ‘we‘, ‘q‘, ‘we‘, ‘q‘]
# split(以匹配到的字符为分隔符)
a=re.split("\d+","1q2w1eqwe\n4qw5eq3we1q5we4q")
print(a) # 把数字作为分隔符区分出英文字母(会有空格)[‘‘, ‘q‘, ‘w‘, ‘eqwe\n‘, ‘qw‘, ‘eq‘, ‘we‘, ‘q‘]
# sub (匹配并替换)结果为字符串
a=re.sub("\d+","|","1q2w1eqwe4qw5eq3we1q5we4q")
print(a) # 把所有的字符串匹配并替换成“|”
a=re.sub("\d+","|","1q2w1eqwe4qw5eq3we1q5we4q",count=4)
print(a) # 把所有的字符串匹配4次并替换成“|”
# 斜杠困扰(4个斜杠匹配一个斜杠)
a=re.split("\\\\","c:\d\c\e\b\c\d")
print(a) # [‘c:‘, ‘d‘, ‘c‘, ‘e\x08‘, ‘c‘, ‘d‘]
a=re.split("\\\\",r‘c:\d\c\e\rb\oo‘) # 做好在前面加个“r"”
print(a) # [‘c:‘, ‘d‘, ‘c‘, ‘e‘, ‘rb‘, ‘oo‘]
# re.I (不区分大小写)
a=re.search("A","AAaBaC",flags=re.I)
print(a.group())
# re.M (匹配多行)
a=re.sub(r"a","|", "\nbac\nae", flags=re.M)
print(a)
# re.S(让“.”匹配任意字符)
a=re.search(r".+", "\nbac\nae")
print(a)
a=re.search(r".+", "\nbac\nae", flags=re.S)
print(type(a.group()))
标签:形式 次数 tin 空格 搜索 大小写 sea 开始 ups
原文地址:http://blog.51cto.com/12992048/2286884