求一个验证是否符合四则混合运算的正则表达

dkings 2010-07-23 09:06:59
求一个验证是否符合四则混合运算的正则表达
...全文
146 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
祥和平静 2010-08-25
  • 打赏
  • 举报
回复
(?R<E>)(
(?<E>(?R<T>)(?R<E1>))
(?<E1>([+*/-](?R<T>)(?R<E1>))|.{0})
(?<T>(\((?R<E>)\))|(?R<number>))
(?<number>[+|-]?\d*\.?\d+(e[+-]?\d+)?)
){0}
这个可能可以用
可以匹配这样
0123456789.0e-2++.22222e-2--.2e-2/-2*(-2*(+2*+2+(.3)))
变态的四则运算。
原理用的是消除左递归。
E->TE1
E1->(+|-|*|/)TE1|e
T->(E)|NUMBER
Peter200694013 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wzp144650 的回复:]
貌似我写这个2楼的是匹配不出来的。

可以给楼主一个解决方案,如果为了验证是否匹配四则运算,可以用 new DataTable().Compute("表达式")

如果得出结果则匹配成功,若得不了,说明匹配失败
[/Quote]
如果不匹配会是异常
try
{

Console.WriteLine(new DataTable().Compute("2 * 3 + 1", null));
}
catch (Exception e)
{
Console.WriteLine("error");
}
Valefish 2010-07-23
  • 打赏
  • 举报
回复
Mark
wzp144650 2010-07-23
  • 打赏
  • 举报
回复
貌似我写这个2楼的是匹配不出来的。

可以给楼主一个解决方案,如果为了验证是否匹配四则运算,可以用 new DataTable().Compute("表达式")

如果得出结果则匹配成功,若得不了,说明匹配失败
Peter200694013 2010-07-23
  • 打赏
  • 举报
回复

还是等 过客 大哥吧...
wzp144650 2010-07-23
  • 打赏
  • 举报
回复
这个可以匹配出来么?

((((3+2)/((3-2)*4-(3+1))*3)-3)/5)+5*3 ……

无限级括号。。
Peter200694013 2010-07-23
  • 打赏
  • 举报
回复
^(((?<o>\()[-+]?([0-9]+[-+*/])*)+[0-9]+((?<-o>\))([-+*/][0-9]+)*)+($|[-+*/]))*(?(o)(?!))$
Peter200694013 2010-07-23
  • 打赏
  • 举报
回复
有: 加减乘除 小括号 数字?还有其他么?
内容概要:本文研究了基于DPWMA调制与正负序分离的ANPC三电平并网逆变器前馈控制策略,旨在解决传统三电平逆变器存在的谐波含量高、电网不平衡工况适应性差及动态响应速度不足等问题。通过采用有源中点箝位(ANPC)三电平逆变器拓扑,结合双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术和电网电压前馈控制,构建了一套一体化的高性能并网控制体系。该体系不仅优化了逆变器的开关动作机制,改善了输出电压电流的谐波特性,而且通过精确的相位同步和扰动补偿,显著提高了系统的动态响应能力和抗扰性能。仿真结果显示,所提出的控制策略能有效降低并网谐波含量,提升锁相精度与系统动态稳定性,确保在复杂电网工况下的高质量稳定并网。 适合人群:具备一定电力电子基础知识和仿真技能的研发人员,尤其是从事新能源发电、储能系统、柔性输电等领域研究的专业人士。 使用场景及目标:①研究和开发高性能并网逆变器,特别是针对大功率、高电能质量要的应用场景;②探索如何通过先进的调制和控制策略来提高并网逆变器对电网扰动的适应性和响应速度;③为相关领域的学术研究和技术开发提供理论依据和实践指导。 阅读建议:建议读者结合实际的仿真软件(如MATLAB/Simulink)进行实践操作,以便更好地理解和掌握文中提到的各种控制策略的具体实现方法。同时,鼓励读者关注最新的研究成果和发展趋势,不断深化对该领域的认识。

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧