2012-05-14 50 views
1

我想创建一个计算器,其中操作数是单词。它可以重复任意次数。 例如EmpName + xyz或EmpName或x + rr + fff。 它应该拒绝这种模式,例如 EmpName +
我创建一个正则表达式:为计算器创建正则表达式模式

(?m)(?<Operand>^[a-z].*?)(?<Operator>[+*]) 

On this output: 
    1) a + b 
    2) ab+dddd 
    3) ab*fffff*ggggg 
    4) dfg+fg4444+fgf4 
    5) xxxxx 
But it only targets 1,2,3,4 and up to only first operator. Output in regex 2.05. 
"Operand: [ab]" 
"Operator:[+]" 
I am using regex builder 2.05 to test my regex. How i can repeat this pattern any number of times? Thanks in advance. 
+0

你是否需要覆盖括号? – aioobe

+0

你在使用哪种语言? – aioobe

+0

是的,我需要parantheses以及分,百分比,减号也。我正在使用.net –

回答

0

作为

  • 操作数随后(操作者操作数)一次或多次
这通常被表示

  • (?m)<Operand>([+*]<Operator>)*

是的,我需要括号以及鸿沟,百分比,减去还签署。

然后我建议考虑使用真正的解析器。平衡括号的语言不规则。

+0

+1为你的逻辑。你是绝对正确的。但因为我是新的正则表达式,所以我不能将这个逻辑转换成正则表达式。请帮助我。 –

+0

我写了一个正则表达式:(?im)(? \ w +)(? [+ *])(? \ w +)但是组正确,但不重复。如果我最后使用* 。如果我只给一个操作数,它就不会选择。我会朝错误的方向行进吗? –