2012-05-14 77 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 +)但是組正確,但不重複。如果我最後使用* 。如果我只給一個操作數,它就不會選擇。我會朝錯誤的方向行進嗎? –