首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配数学表达式模式的Java正则表达式

匹配数学表达式模式的Java正则表达式
EN

Stack Overflow用户
提问于 2014-06-03 05:01:15
回答 2查看 507关注 0票数 0

我试图以递归或迭代的方式匹配这样的字符串模式。

术语:-可以是任何变量(字符串)或整数。

表达式:-术语+表达式或术语*表达式或术语/表达式或术语-表达式

其思想是为这样的数学表达式找到一个匹配的模式

sin^30*sin(45)+46*长度-20

让我们假设这个术语已经准备好了。

像往常一样,我会从一个非常糟糕的开始.在爪哇。

代码语言:javascript
复制
[[term\\+]*[term\\*]*[term\\\]*[term\\-]*]+term
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-03 05:49:06

你用错工具做这份工作了。根据定义,正则表达式不能用递归语法来描述语法。查一下乔姆斯基的等级制度。您需要一个表达式解析器。查找Dijkstra分流码算法,或“递归下降表达式解析器”。

票数 1
EN

Stack Overflow用户

发布于 2014-06-03 05:23:25

这看起来像家庭作业,所以我不会给你一个完整的答案。如果你知道如何使用中等复杂的正则表达式,你应该能够想出一个正则表达式来表示你的“术语”--它应该不会太难。现在,“表达式”的正则表达式将是一个术语,后面将出现零或多个“运算符后项”(运算符是+-*/、也许^?)中的一个。也就是说,表达式将是“术语”、“术语操作术语”或“术语操作术语”等。

注意:这是如何编写一个regex来告诉您输入是否具有正确的格式,但它不会帮助您将其分解为各个部分。为此,您需要在循环中匹配不同的正则表达式(或两个正则表达式)。不过,我不知道你的要求是什么。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24007441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档