2013-07-25 69 views
2

我我的表情正則表達式匹配複雜的表達式

A > 16 
A <= 16 and A >= 1 
A < 40 or A > -40 
A != 19 and A > 50 and A != 8 
A > 1 or A < 2 

的下面的例子我可以在一個單一的正則表達式做了這樣的評價?

basicly

  1. 只允許以下sympols > < = ! - != >= <=
  2. 有有前and/or運營商是空間和A 後只有當它不是第一個字母。
  3. 我的變量始終是恆定的,在這種情況下是A

谷歌並沒有幫助這個時候,我真正的新的正則表達式中,如何才達到這樣的事情將是很好的指導

回答

2

像這樣的東西應該工作:

^A ([<>!]=?|=) -?\d+((and|or) A ([<>!]=?|=) -?\d+)*$ 

它允許地方A相比使用comparitors <的一個部分正或負整數表達式,>!<=>=!=,其次是海灣任意數量的其他類似表述的,由andor —分開你上市!!=作爲單獨的符號,所以我一直都允許作爲比較,也就是我的解決方案實際上允許表達式如A ! 2。如果這不合乎要求,則用上述模式替換([<>!]=?|=)([<>]=?|!?=)

你可以測試一下here

這裏有一個略微簡化的版本,你可以嘗試,以及:

^(A ([<>!]=?|=) -?\d+((and|or) |$))+$ 
+0

我希望我可以給你+10,謝謝它的完美。 – user1590636

+0

@ user1590636很高興提供幫助。快樂的編碼。 –