c# - 检查字符串是否处于正确的模式并区分它们
问题描述
我正在为家庭作业制作一个 win 应用程序,它从文本文件中加载二次或线性方程。我有 2 种格式: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 number, char) 和最后一部分 (+-, float number, = 0)
解决方案
以下几行的内容将为您检测二次方程。它不是 100% 故障安全的,但在大多数情况下应该可以工作:
[+-]?\d*(\.\d+)?(?<var>\w)\^2\s*[+-]\s*\d*(\.\d+)?(?P=var)\s*[+-]\s*\d*(\.\d+)?
将以 的形式接受事物ax^2 + bx + c
,其中 a、b 和 c 是浮点数。
为了使其更具可读性,您可以像这样拆分它:
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"
推荐阅读
- android - Cordova File-Transfer-plugin 下载文件:错误代码 2
- mysql - 为什么我的本地 mysql 实例保存的时间与我的实时实例不同?
- angular - 如何在 Angular 7 的数据透视表(Syncfusion 框架)中显示 0?
- macos - gpg“未能写入提交对象”
- java - 我在使用spring mvc和retrofit 2.0将文件上传到服务器时遇到了这个问题
- opc-ua - 如何使用 Eclipse Milo OPC Server 发送数据
- vue.js - 遍历 Vuex 存储对象
- sql - 计数为零时未显示 PostgreSQL 行
- scala - 如何一次将每个组发送到火花执行器?
- php - 如何在php中搜索2次之间的查询