java - 什么 RegEx 分隔多项式的项
问题描述
我有一个字符串5x^3-2x^2+5x 我想要一个将这个字符串拆分为 5x^3, -2x^2, 5x的正则表达式
我试过"(-)|(\\+)"
了,但这没有用。因为它没有考虑负功率条款。
解决方案
您可以使用此正则表达式拆分字符串,
\+|(?=-)
其工作方式是,它拆分字符串消费+
字符,但如果有,-
则使用拆分-
但不消费-
,因为这是前瞻。
看看这个Java代码,
String s = "5x^3-2x^2+5x";
System.out.println(Arrays.toString(s.split("\\+|(?=-)")));
在下面给出您的预期输出,
[5x^3, -2x^2, 5x]
编辑:
虽然在他的帖子中的一个 OP 评论中他说,不会有负面权力,但万一你也有负面权力,你可以使用这个处理负面权力的正则表达式,
\+|(?<!\^)(?=-)
检查这个更新的 Java 代码,
List<String> list = Arrays.asList("5x^3-2x^2+5x", "5x^3-2x^-2+5x");
for (String s : list) {
System.out.println(s + " --> " +Arrays.toString(s.split("\\+|(?<!\\^)(?=-)")));
}
新输出,
5x^3-2x^2+5x --> [5x^3, -2x^2, 5x]
5x^3-2x^-2+5x --> [5x^3, -2x^-2, 5x]