我在寫正則表達式,它確保數學方程的語法是正確的我嘗試了很多次,但是我沒有得到我想要的。驗證數學公式
我需要你的幫助,找到一個正則表達式來處理以下情況:
op1 = op2 [+-*/%^] number or op3*
允許嵌套括號
op1 = (op2 [+-*/%^] (op3 [+-*/%^] op4)) [+-*/%^] op5 or number*
,也允許這兩種表現形式合併,並允許操作數和操作之間的空間
我在寫正則表達式,它確保數學方程的語法是正確的我嘗試了很多次,但是我沒有得到我想要的。驗證數學公式
我需要你的幫助,找到一個正則表達式來處理以下情況:
op1 = op2 [+-*/%^] number or op3*
允許嵌套括號
op1 = (op2 [+-*/%^] (op3 [+-*/%^] op4)) [+-*/%^] op5 or number*
,也允許這兩種表現形式合併,並允許操作數和操作之間的空間
我試着用正則表達式做到這一點,但是這是很辛苦的,我讓使用堆棧式驗證,它工作正常
http://scriptasylum.com/tutorials/infix_postfix/algorithms/postfix-evaluation/
你可以通過平衡組來做到這一點,你可以閱讀以下文章,以獲得有關平衡組的良好演示和解釋。
http://www.codeproject.com/Articles/21183/In-Depth-with-NET-RegEx-Balanced-Grouping
如果您正則表達式引擎不支持遞歸的正則表達式,你運氣不好。用遞歸下降算法驗證它們。也許你通過計算括號並使用正則表達式驗證每個術語是幸運的,但這肯定會錯過一些角落。 – knittl
看看這個問題:http://stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net – germi
.NET Regex引擎允許通過平衡組遞歸。 –