gpt4 book ai didi

java - 当我使用正则表达式处理多项式时可以处理第一行空间

转载 作者:行者123 更新时间:2023-12-02 10:00:08 25 4
gpt4 key购买 nike

这是我的代码

String a = "X^5+2X^2+3X^3+4X^4";
String exp[]=a.split("(|\\+\\d)[xX]\\^");
for(int i=0;i<exp.length;i++) {
System.out.println("exp: "+exp[i]+" ");
}

我尝试找到输出 5,2,3,4但我得到了这个答案

exp:
exp:5
exp:2
exp:3
exp:4

我不知道第一行空间来自哪里,而且我找不到摆脱它的意愿,我尝试使用其他正则表达式,也使用编译,仍然可以摆脱第一行,我尝试使用新字符串“X+X^5+2X^2+3X^3+4X^4”;第一行显示exp:X。我还使用在线正则表达式编译器来尝试我的问题,但他们的答案是5,2,3,4,购买eclipse给一个空格,然后5,2,3,4,需要帮助来解决这个问题

最佳答案

尝试使用regex ,例如:

    String input = "X^5+2X^2+3X^3+4X^4";

Pattern pattern = Pattern.compile("\\^([0-9]+)");
Matcher matcher = pattern.matcher(input);

for (int i = 1; matcher.find(); i++) {
System.out.println("exp: " + matcher.group(1));
}

它给出输出:

exp: 5
exp: 2
exp: 3
exp: 4

它是如何工作的:使用的模式:\^([0-9]+)它匹配以 ^ 开头后跟 1 个或多个数字的任何字符串(注意 + 符号)。破折号 (^) 以反斜杠 (\) 为前缀,因为它在正则表达式中具有特殊含义 - 字符串的开头 - 但在您的情况下,您只需要完全匹配一个 ^ 字符。

我们希望将匹配项分组,以便在匹配过程中稍后引用它们。这意味着我们需要使用括号 () 来标记它们。

然后我们想将我们的模式放入 Java String 中。在String 文字中,\ 字符具有特殊含义 - 它用作控制字符,例如"\n" 表示新行。这意味着如果我们将模式放入 String 文字中,我们需要转义 \ 所以我们的模式变成: "\\^([0-9] +)”。注意双\

接下来,我们迭代所有匹配,得到第 1 组,这是我们的号码匹配。请注意,^.character 不包含在我们的匹配中,即使它是我们模式的一部分。之所以如此,是因为 wr 使用括号来标记我们搜索的组,在我们的例子中只是数字

关于java - 当我使用正则表达式处理多项式时可以处理第一行空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com