Java 从字符串中提取操作数和运算符

Java 从字符串中提取操作数和运算符,java,data-structures,Java,Data Structures,假设我有一个表达式I10I20I-3++,它应该给我27。我似乎找不到一种方法来删除那些I,或者如果它是字符串中的任何其他字母。此外,我必须找出一种方法,然后计算表达式。我尝试使用正则表达式,但没有成功: public static String removeIs(String input) { //String check = input.replaceAll("[^/+/-/*//^0-9/-]+", " "); String check = input.replaceAll

假设我有一个表达式
I10I20I-3++
,它应该给我27。我似乎找不到一种方法来删除那些
I
,或者如果它是字符串中的任何其他字母。此外,我必须找出一种方法,然后计算表达式。我尝试使用正则表达式,但没有成功:

public static String removeIs(String input)
{
    //String check = input.replaceAll("[^/+/-/*//^0-9/-]+", " ");
    String check = input.replaceAll("[^-+*/^0-9/-](?![^(]*\\))"," ");
    return check;
}

查找任何非运算符非数字字符的表达式为:

[^0-9+\-\*\/]

你在Q下面的评论中说你在写计算器。请注意,您的字符串中有未知数量的数字和运算符,因此可能最好进行循环并遍历字符串,手动获取数字和运算符以在计算器中使用,而不是使用regex backreferences。顺便问一下:为什么要用空格替换
I
?字符串中的分隔符是什么


很久以前,我创建了一个基于正则表达式的高级JS代码解析器,从这段经历中我可以看出,创建一个用于同时解析所有内容的怪异表达式通常是个坏主意。

我认为您应该检查
如何在java中评估中缀表达式
链接:那是什么
I10I20I-3++
?它只是一个测试字符串吗?你说,,,应该给我27''是什么意思?@Wookie88-这是一个计算器表达式,其中操作数由
I
分隔,运算符都在末尾。这是一个后缀表达式,用字母I除以数字,我需要在后缀表达式中有负数。27是在没有I的情况下计算表达式的结果