C 正則表示式的完全匹配 部分匹配及忽略大小寫的問題
阿新 • • 發佈:2018-11-15
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
問題的提出
根據使用者給定表示式,裡面含有各種數學函式,如求絕對值,三角函式,平方、開方等,分別以類似ABS(表示式),Sin(表示式),ASin(表示式),POW(表示式)等形式表述。
由於使用者輸入的可能是不區分大小寫,而且可能用Sin,Asin,Tan,Tanh等(具體見下面程式碼中所述的函式),因此,要求解決完全匹配和部分匹配的問題,還要解決忽略大小寫的問題。
將使用者的函式前加“Math.”,後跟函式名稱及括號等。
實現如下:
//用於數學計算的函式
List<string> listMathFunctions = new List<string>(new string[]{
"Abs", "Acos", "Cos","Asin", "Atan", "Atan2", "Ceiling", "Cosh", "Exp", "Floor", "Log", "Log10",
"Max", "Min", "PI", "Pow", "Round", "Sign", "Sin", "Sinh", "Sqrt", "Tan", "Tanh", "Truncate"});
public string MatchReplaceMathFunctions(string expr)
{foreach (string mathFun in listMathFunctions)
{
expr = Regex.Replace(expr, @"[^<>=Math\.]" + mathFun + @"\s*\(", " Math." + mathFun + "(", RegexOptions.IgnoreCase | RegexOptions.RightToLeft);
}
return expr;
}