正则表达式——匹配包含“+”和“-”的字符串

Regular Expressions - match a string containing "+" and "-"

我有一个字符串,比如 1+++-3--+++++2,其中包含 +- 符号。 我想要做的是用 +- 符号表示 +- 部分。 如果字符串中有奇数个-,我会用-代替,如果是偶数,我会用+代替。我怎样才能使用正则表达式做到这一点?

例如,我有一个数学表达式,比如 1+-+-2-+--+3。它将被替换为 1+2-3

您可以创建一个运算符数组并使用 for 循环来计算一个字符的所有出现次数。例如:

String expression = "1+++-3--+++++2";
String[] str = expression.split("[0-9]+");

for(op : str) {
    int count = 0;
    for(int i =0; i < str.length(); i++)
        if(op.charAt(i) == '-')
            count++;

    if(count % 2 == 0) {
        op = "-";
    }
    else {
        op = "+";
    }
}

str[]中修饰的单字符运算符赋值后,新表达式的写法应该比较简单

基于格式将来自该计算器示例的假设。

//assumed format for input: <any number><any number of `-` and/or `+`><any number>

// 1++---+22+--1 will be 1-22+1
String input = "1++---+22+--1";
for (String s : input.split("[^-+]+");) {
    s = s.trim();
    if (!"".equals(s)) {
        String newStr = s.matches("[+]*-([+]*-[+]*-)*[+]*") ? "-" : "+";
        input = input.replace(s, newStr);
    }
}
System.out.println(input);