我正在为作业制作一个 win 应用程序,它从文本文件中加载二次或线性方程式。我有两种格式:ax^2 + bx + c = 0
或 ax + b = 0
我的问题是我需要区分它是二次的还是线性的,并检查它们的格式是否正确,但我对字符串模式有疑问,想出了类似的东西,但它不起作用
string pattern = @"?([+-]?([0-9]*[.])?[0-9]+\w{1}[^2])([+-][0-9]*[.])?[0-9]+\w{1})([0-9]*[.])?[0-9]+ \=[0]);
因为我不太了解正则表达式,所以我想问你是否可以帮助我处理字符串模式,该模式可以选择匹配格式为 (+-, float number, char^2) 的第一部分,然后是第二部分 (+ -, float , char) 和最后一部分 (+-, float , = 0)
最佳答案
以下几行内容将为您检测二次方程。它不是 100% 的故障安全,但在大多数情况下应该可以工作:
[+-]?\d*(\.\d+)?(?<var>\w)\^2\s*[+-]\s*\d*(\.\d+)?(?P=var)\s*[+-]\s*\d*(\.\d+)?
将接受 ax^2 + bx + c
形式的东西,其中 a、b 和 c 是 float 。
为了提高可读性,可以这样拆分:
var F = $"\d*(\.\d+)?"; //a floating number
var S = $"\s*[+-]\s*"; //+/- sign with leading/trailing space(s)
var Quad = "[+-]?" + F + $"(?<var>\w)\^2" + S + F + $"(?P=var)" + S + F
var Lin = F + $"\w" + S + F + $"\s*=\s*0"
关于c# - 检查字符串的模式是否正确并区分它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55975140/