C#正则表达式的完全匹配、部分匹配及忽略大小写的问题

问题的提出

根据用户给定表达式,里面含有各种数学函数,如求绝对值,三角函数,平方、开方等,分别以类似ABS(表达式),Sin(表达式),ASin(表达式),POW(表达式)等形式表述。

由于用户输入的可能是不区分大小写,而且可能用Sin,Asin,Tan,Tanh等(具体见下面代码中所述的函数),因此,要求解决完全匹配和部分匹配的问题,还要解决忽略大小写的问题。

将用户的函数前加“Math.”,后跟函数名称及括号等。

实现如下:

//用于数学计算的函数
        List<string> listMathFunctions = new List<string>(new string[]{
            "Abs", "Acos", "Cos","Asin", "Atan", "Atan2", "Ceiling",  "Cosh", "Exp", "Floor", "Log", "Log10", 
            "Max", "Min", "PI", "Pow", "Round", "Sign", "Sin", "Sinh", "Sqrt", "Tan", "Tanh", "Truncate"});


        public string MatchReplaceMathFunctions(string expr)

        {
            foreach (string mathFun in listMathFunctions)
            {
                expr = Regex.Replace(expr, @"[^<>=Math\.]" + mathFun + @"\s*\(", " Math." + mathFun + "(", RegexOptions.IgnoreCase | RegexOptions.RightToLeft);
            }
            return expr;
        }
发布了399 篇原创文章 · 获赞 223 · 访问量 360万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览