c# - 检查字符串的模式是否正确并区分它们

标签 c# regex winforms

我正在为作业制作一个 win 应用程序,它从文本文件中加载二次或线性方程式。我有两种格式:ax^2 + bx + c = 0ax + 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/

相关文章:

c# - 使用 asp.net 和 c# 验证服务器端

c# - LINQ 实体结果到 List<string>

javascript - 使用正则表达式从 JavaScript 中的 URL 中删除 utm_* 参数

c# - 窗体的透明背景图像 - 窗体的平滑边缘形状

c# - 像 Windows 资源管理器菜单栏一样自动隐藏 MenuStrip

c# - 为什么这个 IEnumerable 扩展方法比另一个(更简单的)扩展方法(只迭代输入)慢得多?

c# - 将位图保存到文件 - Xamarin、Monodroid

Python 正则表达式 在单词前停止

从查询字符串中删除键的 PHP 函数

带组合框的 C# 消息框