java - 简单数学方程的正则表达式

标签 java regex

我想识别整数或小数以及四个简单的运算,分解为标记 我无法计算小数,你能帮忙吗?

我的注册是

expression = "2.7 + 3 * (1 + 2)";
String expRegString = "\\d+(\\.\\d+)*|[\\(\\)\\+\\-\\*\\/]";
Pattern expPattern = Pattern.compile(expRegString);
Matcher expMatcher = expPattern.matcher(expression);

while (expMatcher.find()){
    System.out.println(expMatcher.group());
}

给我“+”,“3”,“(”,“1”,“+”,“2”,“)”

编辑:正确的结果为"2.7","+", "3", "(", "1", "+", "2",")"

最佳答案

您可以尝试删除所有空格,然后在字符 - + * 之前或之后的每个位置拆分数据/ ( ).

这应该可以解决问题

String expression = "2.7 + 3 * (1 + 2)";
String[] tokens = expression.replaceAll("\\s+", "").split("(?<=[-+*/()])|(?=[-+*/()])");

for (String token : tokens)
    System.out.println(token);

输出

2.7
+
3
*
(
1
+
2
)

关于java - 简单数学方程的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891565/

相关文章:

java - 如何使用正则表达式检查 Java 中的确切电话号码

regex - 隔离一行中的术语

java - 如何使一个组可选,它捕获模式并捕获相同的组号?

java - 如何在没有soapaction header 验证的情况下在camel中创建cxf端点?

java - 尝试从一个 ArrayList 到另一个 ArrayList 创建新引用是移动而不是复制我的原始对象

javascript - 是否有一个 Regex 表达式来匹配每个不在引号中的内容

java - 正则表达式替换前瞻

java - 如何在 Ubuntu 中为 Java 5/Tomcat 5.5 编译 .war?

java - 在java中将两个图像平铺在一起而没有空格

java - 读取和替换 java 中的行