使用正则表达式实现简易表达式计算器
由于我是做工程的,在实际使用中经常要对复杂公式进行计算,觉得使用windows计算器非常不方便,也容易出错,而matlab用于小型的计算太浪费(主要是启动比较慢,而且不是所有地方都有),因此决定自己写一个表达式计算器进行使用。在写计算器的过程中,研究了.NET的正则表达式系统,略有心得。将其写出来与大家分享。
注:实际完成的表达式计算器可在我的115共享上下载,基于了.NET2.0版。同时也提供了一个.NET 2.0 Compact Framework的版本,可以用于Windows Mobile手机,实测在Windows Mobile 6.1和Windows Mobile 6.5上运行正常。
在工程应用中,用到最多的就是整数的位运算,与或非异或移位等操作非常频繁,且经常会有连续操作。特别是在通信控制中,经常使用的校验(采用累加或异或的方式),要计算也较多,因此首先考虑了整数的表达式计算,后续考虑了双精度数据的计算。
1. .NET Framework正则表达式概述(本节内容来自Microsoft MSDN )
正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式;验证文本以确保它匹配预定义的模式(如电子邮件地址);提取、编辑、替换或删除文本子字符串;将提取的字符串添加到集合以生成报告。对于处理字符串或分析大文本块的许多应用程序而言,正则表达式是不可缺少的工具。
正则表达式的工作方式
使用正则表达式处理文本的中心构件是正则表达式引擎,该引擎在 .NET Framework 中由System.Text.RegularExpressions. Regex 对象表示。使用正则表达式处理文本至少要求向该正则表达式引擎提供以下两方面的信息: 在 .NET Framework 中,正则表达式模式用特殊的语法或语言定义,该语法或语言与 Perl 5 正则表达式兼容,并添加了一些其他功能,例如从右到左匹配。有关更多信息,请参见正则表达式语言元素。 Regex类的方法使您可以执行以下操作: 通过调用IsMatch方法确定输入文本中是否具有正则表达式模式匹配项。有关使用IsMatch方法验证文本的示例,请参见如何:验证字符串是否为有效的电子邮件格式。
通过调用Match或Matches方法检索匹配正则表达式模式的一个或所有文本匹配项。第一个方法返回提供有关匹配文本的信息的Match对象。第二个方法返回MatchCollection对象,该对象对于在分析的文本中找到的每个匹配项包含一个Match对象。
通过调用Replace方法替换匹配正则表达式模式的文本。有关使用Replace方法更改日期格式和移除字符串中的无效字符的示例,请参见如何:从字符串中剥离无效字符和示例:更改日期格式。
***详细的.NET正则表达式使用请参见Microsoft MSDN
2. 整数表达式运算的实现
2.1需求分析
首先要确定整数表达式运算需要实现哪一些功能。根据实际情况,当前确定整数表达式运算至少应该支持如下功能:
发表评论
-
一个字符串问题的思考
2012-07-06 09:51 497一、 问题描述: 求解给定文本text 中以字符 A ... -
Vim正则表达式查找替换
2012-07-06 09:45 934这里简单的给大家介绍一下Vim的查找替换,众所周知,Vim ... -
VTK使用入门(四)
2012-07-06 09:30 1770#include "vtkDICOMImageR ... -
页面仿百度下拉框,支持动态后台提取数据
2012-07-05 20:44 999.bottom_up { font-family ... -
核心Swing组件(五)
2012-07-03 13:42 563如图4-1所示,AbstractButton类是作用在幕后 ... -
Flex 文件上传导入组件
2012-07-02 10:22 335上文讲到Flex利用Blazeds来上传文件,本文则封装了 ... -
flex分页控件源码
2012-07-02 10:22 564功能说明:只配合服务器端分页。这个分页条是通用的。只需要在 ... -
自定义网页滚动条
2012-07-02 10:21 522用户操作 [留言] [发消息] [加为好友] ... -
Three ways to set a custom busy cursor in flex
2012-07-02 10:21 507First, prepare your custom cu ... -
Android
2012-07-02 09:43 448... -
PHP作为Flex程序的数据源
2012-07-01 09:41 448Adobe Flash Builder 4 简体中文正式版 ... -
Flex和Spring的整合
2012-07-01 09:41 391关于Flex Adobe Flex是一套创建富客户端应用( ... -
实现FLEX 通过AMF跟PHP通信
2012-07-01 09:41 517AMF flex一种远调用 ... -
Java Server Push To Flex (ServerPush)
2012-07-01 09:40 515在网上找了许多的Flex与java 通信做ServerPu ... -
linux 下同名符号冲突问题解决方法
2012-06-30 17:56 1647最近的工作中遇到如下令人蛋疼的问题: linux 下 ... -
在xp和Win7上使用Tomcat 6.0经常遇到的几个问题及其解决方法
2012-06-30 17:56 497在Win7上使用Tomcat 6.0经常会遇到一下几个问题 ... -
找到多个具有相同 ID“_header”的控件。FindControl 要求控件具有唯一的 ID。错误的解决方法!
2012-06-30 17:56 529找到多个具有相 ... -
DB2相关问题及解决方法
2012-06-30 17:56 495DB2相关问题及解决方法: 一、DB2中的代码页( ... -
session串的问题以及解决方法
2012-06-30 17:56 561什么是session串的问题 典型案例:现有一W ...
相关推荐
C#计算器实验~ -使用正则表达式解决~ -依据windows自带计算器为参考~ -附有源程序~
该计算器可以给你一个方便的界面,用来测试正则表达式。 开发环境:vs2010 + .net 4.0。 源代码全提供,需自己编译。
用正则表达式和逆波兰表达式来写的表达式计算器
Java中使用正则表达式的测试器,让你的编写正则表达式不再麻烦,重复,功能很强大
计算表达式:1 – 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) – (-4*3)/ (16-3*2) )的结果。 解题思路: 第1步:创建一个函数search_bracket_exp,通过re.rearch找到括号里面的表达式,...
计算器。。可以实现基本的功能。已可解决括号,乘除的顺序问题。 可以实现简单的计算工式输入不合法问题。 (主要方法是正则表达式)
JavaCalculator 使用正则表达式用Java创建的计算器
基于MFC的一个用了计算表达式的计算器,例如可计算表达式 300-((4*34-5)/4+4) 的值,里面是一个完整的工程,代码后面都有足够详细的注释
主要介绍了Python利用正则表达式实现计算器算法思路解析,非常不错,具有参考借鉴价值,需要的朋友参考下吧
本文实例讲述了Python正则表达式实现简易计算器功能。分享给大家供大家参考,具体如下: 需求:使用正则表达式完成一个简易计算器。 功能:能够计算简单的表达式。 如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2 import re ...
本篇文章主要介绍了Python 正则表达式实现计算器功能的示例。具有很好的参考价值。下面跟着小编一起来看下吧
主要为大家详细介绍了python正则表达式之作业计算器,感兴趣的小伙伴们
1.与电脑上的计算器功能一样; 2.图形界面; 3.内含源代码以及.exe程序 ; 4.主要技术:正则表达式 ; 5.本人第一次上传资源,望多多支持;
可以计算任意正则表达式。(包含所有计算函数,并非用脚本组件msscript.ocx实现)支持运算符+,-,*,/,\(整除),%(求余),^(乘方)和任意正确括号的嵌套。如输入"1+(2*3+4^5)/6-7"即可得到结果165.666666666667。希望...
适合初学者借鉴学习的好实例,里面包含后缀式算法、简单易懂的正则表达式、字符串的多种方法的使用,迅速提高对C#的理解与运用。