gpt4 book ai didi

浮点和运算符的java匹配器正则表达式错误?

转载 作者:行者123 更新时间:2023-12-01 15:55:09 25 4
gpt4 key购买 nike

我想尝试过滤所有运算符和操作数,包括浮点使用正则表达式从命令行输入。当我将它与单独的匹配器一起使用时,运算符工作正常并且浮点工作,但我想用一个正则表达式术语来解决这个问题到目前为止我的代码是这样的

    Matcher numbers = Pattern.compile("[0-9]*\\.?[0-9]+").matcher(expr);
Matcher m = Pattern.compile("[\\+|\\*|/|\\-|\\^|\\!|_|([0-9]*\\.?[0-9]+)]").matcher(expr);

while(numbers.find()) {
System.out.print(" " + numbers.group() + " num \n");
}

while (m.find()) {
System.out.print(" " + m.group() + " -- \n");
}

这是输出

3.0 数字 2 数

3 -- 。 -- 0 -- 2 --

如您所见,数字匹配器只是找到 float 和普通数字,并且工作正常。但如果我在由 or 分隔的第二个匹配器中使用它我得到 3 . 0 作为单独的匹配。

最佳答案

IIRC Java 正则表达式使用括​​号作为分组运算符,而不是像您那样使用方括号。你试过吗

"(\\+|\\*|/|\\-|\\^|\\!|_|([0-9]*\\.?[0-9]+))"

相反?因为你得到的只是一个大的、多重冗余的字符集:它应该只匹配第一个左方括号和最后一个右方括号之间的任何一个字符。这似乎就是您所看到的行为。

或者我完全误解了第二个正则表达式的意图?

关于浮点和运算符的java匹配器正则表达式错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5233927/

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