原文: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;
        }

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

  1. python正则匹配找到所有的浮点数_Python随笔17:Python正则表达式基础(4):贪婪匹配和最小匹配...

    Python正则表达式 贪婪匹配/最小匹配 Re库默认采用贪婪匹配,即匹配最长的子字符串.在量词后面加一个"?",即可由贪婪匹配化为最小匹配. '*'用于将前面的模式匹配0次或多次 ...

  2. 正则表达式学习笔记001--点号匹配

    正则表达式学习笔记001--点号匹配 以前写的课程都没有附上源码,很抱歉! 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记001--点号匹配 http ...

  3. js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global)...

    js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global) 一.总结 1. ...

  4. python正则表达式 多个条件的匹配

    python正则表达式 多个条件的匹配 result = re.search(('大功率.*CIR|标准型.*CIR|小型化.*CIR',i) 通过使用 这些关键字可以实现在正则匹配时对多个字段的匹配

  5. oracle正则表达式包含但不含_正则表达式里字符串”不包含”匹配技巧 - 穿梭于偶然...

    经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在 事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确.就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题 ...

  6. 一个可以使用多个正则表达式进行多次尝试匹配、替换或提取的Excel VBA自定义函数(UFD)...

    该自定义函数可使用多个正则表达式对目标单元格进行多次匹配尝试,如匹配成功,将停止尝试匹配其他正则表达式,并且使用该正则表达式相对应的替换表达式进行替换,返回替换结果. 您可以直接下载包含该函数代码的X ...

  7. 超Easy正则表达式实战教程---入门 :匹配多种形式浮点数

    超Easy正则表达式实战教程-入门 :匹配多种形式浮点数 浮点数多种形式,包括如下: 3.6 , +3.14 , -3.14 , .7 正确匹配上述浮点数,正确姿势如下: ~ [+-]?[0-9]+. ...

  8. 正则表达式 python 没有则不匹配_python中关于正则表达式二

    2.2 反向引用 \1, \2... 表达式在匹配时,表达式引擎会将小括号 "( )" 包含的表达式所匹配到的字符串记录下来.在获取匹配结果的时候,小括号包含的表达式所匹配到的字符 ...

  9. python模糊匹配忽略大小写_正则表达式忽略大小写匹配,但保留特定大小写的结果...

    我正在寻找解决此问题的有效方法 假设我们要在忽略大小写的情况下查找字符串中的单词列表,但是与其存储匹配的字符串,我们不希望使用与原始列表具有相同大小写的字符串. 例如 : words_to_match ...

最新文章

  1. python时间日期字符串各种
  2. oracle如何进入管理器,oracle 启动管理器
  3. sklearn API 文档
  4. 虚拟机连接网络_Parallels Desktop 16教程PD16虚拟机共享网络和桥接网络设置方法
  5. SaaS,PaaS,IaaS都是什么鬼
  6. layui导航栏页面滚动固定_帮你搞定长滚动网页的设计!这5种设计策略需谨记!...
  7. SharePoint中添加或者修改Item时调用EventReceiver(Event Handler)处理额外的逻辑
  8. VoiceDial首款语音识别软件使用教程
  9. Luogu 4069 [SDOI2016]游戏
  10. rest 网络设计开发,降低复杂性设计方案
  11. R爬虫小白入门:Rvest爬链家网+分析(三)
  12. 信息化集成,路在何方?
  13. go之树型结构深度理解
  14. 无聊日常——对QQ邮箱盗号邮件的垃圾账号填充
  15. PSM+DID 效果评估python demo 、线性分类模型+双重差分法
  16. git 拉取其他分支代码
  17. Windows下Nginx安装使用
  18. 什么是RCT实时时钟?(STM32中RTC时钟源)
  19. [java] JNLP文件安装
  20. 补码加法器中低位进位信息是什么?

热门文章

  1. java i 底层原理,《Java基础知识》Java Hash底层原理
  2. cropper.js 图像旋转问题_JavaScript开源良心插件,纯前端网页图片剪裁插件——cropperjs...
  3. 社团部部长工作计划计算机学院,社团部部长工作计划(共8篇).doc
  4. android多渠道自动打包工具,Android多渠道打包工具
  5. python scale 窗口部件 使用_Tkinter介绍及教学-Python教学【StudyQuant-Python量化投资课堂】...
  6. FPGA之道(59)时空变换之时域优化
  7. FPGA之道(21)HDL语言的选择
  8. FPGA之道(4)锁存器与寄存器
  9. 获取远程数据本地缓存到PHP数组
  10. 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox