用正则表达式实现 运算 express = '1 -2* ((60-30 +(-40/5) *(9-2*5/3 +7 /3*99 /4*2998 +10 *568 /14))-

Posted weidaijie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用正则表达式实现 运算 express = '1 -2* ((60-30 +(-40/5) *(9-2*5/3 +7 /3*99 /4*2998 +10 *568 /14))-相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python
# coding:utf-8
import  re
def  dealwith(express):
    express.replace(+-,-)
    express.replace(--,+)
    return express
def  col_suanshu(exp):
    if  / in exp:
        a,b = exp.split(/)
        return str(float(a)/float(b))
    if  *  in  exp:
        a,b = exp.split(*)
        return str(float(a)*float(b))

def   get_no_barcate(express):
    express =express.strip(())
    print(>>>,express)
    while True:
        ret = re.search("-?d+.?d*[*/]-?d+.?d*",express)
        if  ret :
            res = col_suanshu(ret.group())
            express = express.replace(ret.group(),++res)
            print(表达式,express)
            express = dealwith(express)
        else :
            ret =  re.findall(-?d+.?d*,express)
            sum = 0
            for  i in ret:
                sum +=  float(i)
            return str(sum)

express =  1  -2* ((60-30  +(-40/5)  *(9-2*5/3 +7 /3*99  /4*2998  +10 *568 /14))-(-4*3)/(16-3*2))
new_express =  express.replace( ,‘‘)
print(new_express)
print(正确的运算结果,eval(new_express))
while True:
    ret = re.search(([^()]+),new_express)
#    print(ret.group())
    #print(ret.group())
    if  ret:
        barcate_sum = get_no_barcate(ret.group())
        print(返回值,barcate_sum)
        new_express =new_express.replace(ret.group(),barcate_sum)
        new_express= dealwith(new_express)
    else :
         sum = get_no_barcate(new_express)
         print(sum)
         break

 

以上是关于用正则表达式实现 运算 express = '1 -2* ((60-30 +(-40/5) *(9-2*5/3 +7 /3*99 /4*2998 +10 *568 /14))-的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式高级替换,匹配后进行运算,然后使用结果替换,怎么实现?

正则表达式运算符的顺序 (..|.. ... ..|..)

Leetcode:Regular Expression Matching

正则表达式(Regular Expressions)

C# 正则表达式

Regular Expression(正则表达式)之邮箱验证