我工作的一個自定義的數學表達式計算器,但我有在分析這樣一個嵌套條件表達式問題:VB.Net/C# - 自定義功能分割字符串
IIF("M"="M",(IIF(100 < 50,(IIF(2 > 0.45,2,1)),(IIF(2 > 0.45,4,3)))),(IIF(100 < 46,(IIF(2 > 0.45,2,1)),(IIF(2 >0.45,4,3)))))
我」什麼ð喜歡做的是用逗號,以分裂IIF函數來獲取它的參數:
Dim condition = "M"="M"
Dim truePart = (IIF(100 < 50,(IIF([2 > 0.45,2,1)),(IIF(2 >0.45,4,3))))
Dim falsePart = (IIF(100 < 46,(IIF(2 > 0.45,2,1)),(IIF(2 >0.45,4,3)))))
目前我使用正則表達式通過獲取什麼是括號和分割這裏面來解析單IIF功能逗號:
\((.*?)\)
顯然不具有這樣的表達工作,因爲它會在第一個右括號停下來,所以我想過用它來獲取所有其他字符:
\((.*?)\).*
但現在我不確定如何分割它,因爲使用逗號不再是一個選項。
如果你想解析它,寫一個解析器.. – stuartd
我沒有得到這種答案的好處。我確實寫了一個解析器,但是我在解析上面指定的表達式類型時遇到了問題。 –
好吧,你可以用[this]這樣的東西(http://regexstorm.net/tester?p=IIF%5c%28%28%3f%3a%2c%3f%28%5c%28%28%3f%圖3a%5B%5E%28%29%圖5d%2B%7C%28%3F%3CO%3E%5C%28%29%7C%28%3F%3CO%3E%5C%29%29%29 * %28%3F%280%29%28%3F!%29%29%5℃%29%7C%5B%5E%2C%5D%2B%29%2B%29 *%5C%29&I = IIF%28%22M %22%3D%22M%22%2C%28IIF%28100 +%3C + 50%2C%28IIF%282 +%3E + 0.45%2C2%2C1%29%29%2C%28IIF%282 +%3E + 0.45% 2C4%2C3%29%29%29%29%2C%28IIF%28100 +%3C + 46%2C%28IIF%282 +%3E + 0.45%2C2%2C1%29%29%2C%28IIF%282 +%3E0 .45%2c4%2c3%29%29%29%29%29)但它看起來不正確。對於正則表達式看起來並不合適。 –