2011-07-03 89 views
0

我需要幫助的最後一個正則表達式問題。我試圖做的是能夠解析數學表達式,同時仍然讓我的正則表達式識別一元符號。我使用下面的解析整數:匹配一元符號和解析數學正則表達式

[\+\-]?[0-9]+ 

其中一期工程在這2種情況罰款:

myVar = -5 
myVar = +5 

正則表達式正確標識都-5和+5的整數。我的問題是,如果我有這樣一個場景:

myVar = 7-5 

然而,這被正確匹配:

myVar = 7*-5 

現在什麼正則表達式是做在7-5場景識別它的2個整數, 7和-5。實際上,我想要的是它能夠識別整數(7),減號( - ),然後是另一個整數(5)。我需要做什麼正則表達式模式?

在此先感謝。順便說一下,這是.NET Regex。

回答

-1

使用此:

((\d)+[\+\-\*/])* 

然後使用MatchCollection和組以獲得期望的結果。

0

假設問題輸入限制如下:

  1. 1個二進制運算符的最大值(*,/,+, - )
  2. 2一元運算符的最大值(+, - )
  3. 所有的數字都是整數
  4. 沒有空格

那麼下面的正則表達式將工作:
(([\+\-]?[\d]+)([\+\-\*\/]))*([\+\-]?[\d]+)
(忽略結果的第一基團。)

如果要考慮空間,添加\s*的括注之間:
(([\+\-]?[\d]+)\s*([\+\-\*\/]))*\s*([\+\-]?[\d]+)

實施例的輸入和輸出(來自組2-4):
Input \2 \3 \4 -5 -5 +5 +5 7-5 7 - 5 7*-5 7 * -5 -7*-5 -7 * -5