1 import re 2 origin= "hello alex bcd alex 1ge alex acd 19" 3 r=re.match("(?P<n1>h)(?P<n2>w+)",origin) 4 print(r.group())#获取匹配所有结果 5 print(r.groups())#获取模型中匹配的分组结果 6 print(r.groupdict())##获取模型中匹配的分组结果r=re.match("(?P<n1>h)(w+)",origin) 7 ''' 8 hello 9 ('h', 'ello') 10 {'n2': 'ello', 'n1': 'h'} 11 '''
groups()就是显示选组(),而groupdict就是在分组加入一个关键字key
a = "alex"
n = re.findall('(w)(w)(w)(w)',a)
print(n)
n = re.findall('(w){4}',a)
print(n)
n = re.findall("",a) #匹配空['', '', '', '', '']会比字符串多一个,就是最后再匹配一次
print(n)
str1 = "1abc2abcq3abc4abc"
t = re.findall('(dabc)*',str1)#结是为什么是['2abc', '', '4abc', '']
#这个是因为匹配*为贪婪模式1abc2abc但括号取值取最后一个,到q是*可以为空,空匹配到,接着3abc4abc取后面4abc,完后还有一个空匹配
print(t)
运行结果
[('a', 'l', 'e', 'x')]
['x']
['', '', '', '', '']
['2abc', '', '4abc', '']
1 import re 2 def f(n): 3 while True: 4 if re.search('d+.?d*[*/]d+.?d*',n):#匹配小数点 5 ret=re.search('d+.?d*[*/]d+.?d*',n).group() 6 # print(ret) 7 t=re.split('([*/])',ret) 8 # print(t) 9 if t[1] == '*': 10 sum = float(t[0])*float(t[2]) 11 else: 12 sum = float(t[0])/float(t[2]) 13 n1 = n.replace(ret,str(sum)) 14 # print(n1) 15 n = n1 16 t.clear() 17 else: 18 break 19 while True: 20 if re.search('d+.?d*[+-]d+.?d*',n): 21 ret=re.search('d+.?d*[+-]d+.?d*',n).group() 22 # print(ret) 23 t=re.split('([+-])',ret) 24 # print(t) 25 if t[1] == '+': 26 sum = float(t[0])+float(t[2]) 27 else: 28 sum = float(t[0])-float(t[2]) 29 n1 = n.replace(ret,str(sum)) 30 # print(n1) 31 n = n1 32 t.clear() 33 else: 34 break 35 return n 36 n1 = '1+0*(3*4+(1+3))+23-2.51*0' 37 print(n1) 38 flag = True 39 while flag: 40 t1=re.split('(([^()]+))',n1,1)#split分割出来去掉() 41 if len(t1) == 3 : 42 str1 = f(t1[1])#调用加减乘除函数 43 t1[1]=str(str1) 44 n1="".join(t1) 45 # print(n1) 46 else: 47 flag = False 48 n2=f(n1) 49 print(n2)
1 n='1+2*3+3*4' 2 n1, count = re.subn('*','/',n) 3 print(n1,count)
运行结果
1+2/3+3/4 2