我想将所有要添加的数字分组。
遵循:100-10.42 = 6 +7
'6'。
我的想法是提取应该添加的数字,如下所示:
然后添加它,并在字符串中使用replace()方法将其替换
尝试过正则表达式:
(?=([0-9]{1,}[\\+]{1}[0-9]{1,}))
输入样例:
82+18-10.2+3+37=6 + 7
用于标识要添加和替换的组的Java代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReplaceAddition {
static String regex = "(?=([0-9]{1,}[\\+]{1}[0-9]{1,}))";
static String testStr = "82+18-10.2+3+37=6 + 7 ";
public static void main(String[] args) {
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(testStr);
while (matcher.find()) {
System.out.println(matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
}
}
}
输出:
不明白我在哪里失踪。帮助将不胜感激...
最佳答案
我尝试通过删除正向超前运算符来简化正则表达式
(?=...)
以及圆括号
(...)
经过这些更改后,正则表达式如下
static String regex = "[0-9]{1,}[\\+]{1}[0-9]{1,}";
运行它时,我得到以下结果:
82+18
2+3
这接近预期,但仍不完美,因为我们得到的是“2 + 3”而不是2 + 3 + 37。为了处理任意数量的加数而不是仅仅两个,可以将表达式进一步调整为:
static String regex = "[0-9]{1,}(?:[\\+]{1}[0-9]{1,})+";
我在这里添加的是一个非捕获组
(?:...)
加号表示一个或多个重复。现在程序产生输出
82 + 18
2 + 3 + 37
如预期的那样。
关于java - 将所有带有+符号的数字相加,并将其替换为增加的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57419312/