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

 


posted on 2017-10-12 15:38  43125471  阅读(110)  评论(0编辑  收藏  举报