求一个四则的正则 本帖最后由 huyou1983218 于 2010-12-03 20:52:54 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ^\s*[-+]?(((([0-9]\,?[0-9]*)+\.?[0-9]*))+(\s*$|\s*([-+*/]+?|[<>!=]+)\s*))*(((?<o>\()\s*[-+]?(((([0-9]\,?[0-9]*)+\.?[0-9]*))+\s*([-+*/]+?|[<>!=]+)\s*)*)+((([0-9]\,?[0-9]*)+\.?[0-9]*))(\s*(?<-o>\))(\s*([-+*/]+?|[<>!=]+)\s*((([0-9]\,?[0-9]*)+\.?[0-9]*))+)*)+(\s*$|\s*([-+*/]+?|[<>!=]+)\s*))*(?(o)(?!))(?<=[0-9)]\s*)\s*$现在可以这样了(1.2-(3.4+3)/2-4.1*1.2)谁能帮忙替换成1楼的格式 试试这个。你的例子都能捕获,对表达式规则没仔细验证,比如00,++都没做判断。\b(?:(?<o>\()|(?<-o>\))|[a-zA-Z0-9_+\-*/.]+)+(?(o)(?!)) 1.2-(未报送+3)/2-4.1*1.2 这个也能通过,带中文的不能通过,G0100_0910_D01000690D57+G0100_0910_D01000690D57*2+(G0100_0910_D01000690D57-G0100_0910_D01000690D53)最重要的是这样的公式能捕获 \b(?:(?<o>\()|(?<-o>\))|(?<!\))[a-zA-Z0-9_.]+|(?<![+\-*/])[+\-*/])+(?(o)(?!))你贴的都可以通过。 G0100_0910_D01000690D57+G0100_0910_D01000690D57*未报送2(G0100_0910_D01000690D57-G0100_0910_D01000690D53) 这样也通过了,不能出现中文 没有吧,8楼贴的,会产生2次结果G0100_0910_D01000690D57+G0100_0910_D01000690D57*(G0100_0910_D01000690D57-G0100_0910_D01000690D53)试试这样^(?!.*?[+\-*/]\s*$)(?=[()a-zA-Z0-9_.+\-*/]+$)\s*(?:(?<o>\()|(?<-o>\))|(?<!\))[a-zA-Z0-9_.]+|(?<![+\-*/])[+\-*/])+(?(o)(?!))\s*$ er...不满足的例子你可以继续贴。平衡组确定()的成对出现[a-zA-Z0-9_.]限定了表达式变量的有效字符[+\-*/]定义了符号最前面用环视确定符号不是最后一个有效字符,避免缺失操作数的可能(?=[()a-zA-Z0-9_.+\-*/]+$) 限定了允许出现的符号列表虽然没有按你那种复杂的写法来写,但这已经是描述出了你实际需求的,正则语法是以方面,但规则总结可能会导致表达式不同的。还有不符合的情况贴一下? 我的意思是公式项要符合G0100_0910_D01000690D57 这样的格式,公式项也可以是数字。所以我感觉正则不能完全实现。 G0100_0910_D01000690D57 这样的格式这是什么格式?哪些是固定的?G?还是大写字母开头?你说明格式,这个问题正则有解。 格式就GF 或 SF 或G 或S 然后_然后 4位数字例如0910在_然后后面就有可能是中文的有可能是D01000690D57这样的,就这种格式。 c#怎么在一个类里调用另外一个类的变量 C#学习中。。。。再次找老师解答 Dictionary使用add方法时出现了索引超出界限,不知啥原因 关于线程 一个有点小难的问题,求解答 怎样把注释编译到DLL中? 讨论一下吧,如何清晰组织页面数据和页面方法? 关于Repeater中嵌套CheckBox的问题。(求源码)(分不够可再给) 请教高手!!!C#打开文件问题 C# 急求大神 一个不知道名字的图 的实现 全部分数献上 在KeyPress中处理回车的问题 各位谁弄过西蒙子s7-200,用.net和他通讯,传送指令,哪位好心大哥给点资料
^\s*[-+]?(((([0-9]\,?[0-9]*)+\.?[0-9]*))+(\s*$|\s*([-+*/]+?|[<>!=]+)\s*))*(((?<o>\()\s*[-+]?(((([0-9]\,?[0-9]*)+\.?[0-9]*))+\s*([-+*/]+?|[<>!=]+)\s*)*)+((([0-9]\,?[0-9]*)+\.?[0-9]*))(\s*(?<-o>\))(\s*([-+*/]+?|[<>!=]+)\s*((([0-9]\,?[0-9]*)+\.?[0-9]*))+)*)+(\s*$|\s*([-+*/]+?|[<>!=]+)\s*))*(?(o)(?!))(?<=[0-9)]\s*)\s*$现在可以这样了(1.2-(3.4+3)/2-4.1*1.2)谁能帮忙替换成1楼的格式
\b(?:(?<o>\()|(?<-o>\))|[a-zA-Z0-9_+\-*/.]+)+(?(o)(?!))
最重要的是这样的公式能捕获
没有吧,8楼贴的,会产生2次结果
G0100_0910_D01000690D57+G0100_0910_D01000690D57*
(G0100_0910_D01000690D57-G0100_0910_D01000690D53)试试这样^(?!.*?[+\-*/]\s*$)(?=[()a-zA-Z0-9_.+\-*/]+$)\s*(?:(?<o>\()|(?<-o>\))|(?<!\))[a-zA-Z0-9_.]+|(?<![+\-*/])[+\-*/])+(?(o)(?!))\s*$
不满足的例子你可以继续贴。
平衡组确定()的成对出现
[a-zA-Z0-9_.]限定了表达式变量的有效字符
[+\-*/]定义了符号
最前面用环视确定符号不是最后一个有效字符,避免缺失操作数的可能
(?=[()a-zA-Z0-9_.+\-*/]+$) 限定了允许出现的符号列表虽然没有按你那种复杂的写法来写,但这已经是描述出了你实际需求的,正则语法是以方面,但规则总结可能会导致表达式不同的。还有不符合的情况贴一下?
这是什么格式?
哪些是固定的?G?还是大写字母开头?你说明格式,这个问题正则有解。