我已经尝试了标准预测方法来否定我用于方程求解器的正则表达式。问题是它无法正常工作。
给出样本方程式: 1 + 2×3×4 +
我想隔离乘法的2个实例。我想在一个数组中使用{1 +,+},在另一个数组中使用{2x5,3x4}。
我使用split(“\\ d + x \\ d”)来获取第一个数组,但无法成功否定该正则表达式以获取另一个数组。感谢您的时间,任何帮助表示感谢!
答案 0 :(得分:0)
我想不出一个会产生乘法项的单行程,但使用匹配器提取它们相当简单。
String input = "1+2x5+3x4";
// you already found a way to identify the non multiplication terms
String[] first = input.split("\\d+x\\d+");
String pattern = "(\\d+x\\d+)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(input);
List<String> second = new ArrayList<>();
while (m.find()) {
second.add(m.group(1));
System.out.println(m.group(1));
}
请注意,通常您应该使用解析器来处理复杂的算术表达式。该解析器可能在内部大量使用正则表达式,但只要使用嵌套括号,单独使用正则表达式将无法正常工作。
<强>输出:强>
2x5
3x4