2012-10-14 30 views
2

給定一行代碼,我需要根據特定標準確定它是否有效。根據一定的標準確定一行代碼是否有效

  1. 如果該行包含任何特殊關鍵字。關鍵字以美元符號開頭。例如,$SREAD是這裏的關鍵詞

    tempval = $SREAD(13,"B14.OATEMP"); 
    
  2. 我需要得到一個數字組成的關鍵字的方法中的參數。然後將參數計數與應用程序內的常量值進行比較。

在這裏確定有效性的最簡單方法是什麼?

+4

您必須實現一個解析器,即使是小的例子使用的分配,一個「函數調用」和字符串和整數參數。如果您將用來執行該表達式的解釋器支持運行時編譯,則可以使用它來驗證它。你不能用普通的正則表達式進行真正的驗證。 –

回答

0

試試這個正則表達式:

\$keyword\(([^,\)]+,?)+\) 

修訂:和你的代碼:

var inputString = "tempval = $keyword(13,\"B14.OATEMP\");"; 
inputString = Regex.Replace(inputString, "\".*?\"", "\"\""); 

var count = 0; 

if (Regex.IsMatch(inputString, @"\$keyword\(([^,\)]+,?)+\)")) 
    count = Regex.Matches(inputString, @"\$keyword\(([^,\)]+,?)+\)")[0] 
       .Groups[1].Captures.Count; 
+0

我不認爲這可以用於下面的例子:'$ SREAD(13,「B14,OATEMP」)'(帶有嵌入的逗號)。 –

+3

OP確實需要開發語法和解析器,而不是使用正則表達式。 – slugster

+0

我更新了我的答案,這在任何情況下都能正常工作 – Ria

相關問題