String p = "f(x) = 0.0000001122*x^5 - 0.0000184003*x^4 + 0.0009611014*x^3 - 0.0179035548*x^2 - 0.7956585082*x + 79.9900932407";
String expr1 = p.ToString().Replace(" ", "");
var results = Regex.Matches(expr1, @"[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?").Cast<Match>().Select(m => m.Value).ToList();
Console.WriteLine(results[9]);
我能够提取方程式的系数,但是输出中还包含x的幂,这是我不想要的。 有人可以帮我吗? 我对正则表达式不太熟悉。
谢谢。
答案 0 :(得分:0)
只要系数是仅用数字表示的数字,就可以尝试使用Rational myRational = new Rational(); // TODO: remove
。
var results = Regex.Matches(expr1, @"\d+\.?\d+").Cast<Match>().Select(m => m.Value).ToList();
匹配一个或多个数字\d+
匹配0或1“。” 答案 1 :(得分:0)
通过正则表达式可能很困难;使用Linq会更容易:取每两个系数,就可以得到想要的结果:
Regex.Matches(expr1, @"[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?").Cast<Match>().Select(m => m.Value).Where ((x,i) => i%2==0).ToList();
答案 2 :(得分:0)
尝试
String p = "f(x) = 0.0000001122*x^5 - 0.0000184003*x^4 + 0.0009611014*x^3 - 0.0179035548*x^2 - 0.7956585082*x + 79.9900932407";
String expr1 = p.ToString().Replace(" ", "");
var results = Regex.Matches(expr1, @"(?<coe>[-+]?[0-9]*\.[0-9]+)").Cast<Match>().Select(m => m.Groups["coe"].Value).ToList();
foreach (var result in results)
{
Console.WriteLine($"{result}");
}
Console.Read();
结果:
0.0000001122
-0.0000184003
+0.0009611014
-0.0179035548
-0.7956585082
+79.9900932407