Java 在平方根之后包含整个第一个数字的最佳正则表达式是什么?

Java 在平方根之后包含整个第一个数字的最佳正则表达式是什么?,java,regex,Java,Regex,对不起,我的头衔被剥夺了。我正在尝试创建一个计算器,需要在许多不同的情况下找到第一个数字(包括负数和小数) 一个特别困难的情况包括平方根。目前,它不包括超过第一个数字的任何内容。它应该包括整个数字 第一个数字的模式: “[0-9]\\d*(\\.\\d+)(?=.*(\\-)?[0-9]\\d*(\\.\\d+)” 例如,”√10“返回1,而不是10 欢迎任何帮助!感谢您阅读本文。这可以通过一个简单的正则表达式来解决:(-124;\++)\ d+(\.\d++)$。到正则表达式(regex101

对不起,我的头衔被剥夺了。我正在尝试创建一个计算器,需要在许多不同的情况下找到第一个数字(包括负数和小数)

一个特别困难的情况包括平方根。目前,它不包括超过第一个数字的任何内容。它应该包括整个数字

第一个数字的模式:
“[0-9]\\d*(\\.\\d+)(?=.*(\\-)?[0-9]\\d*(\\.\\d+)”

例如,
”√10“
返回
1
,而不是
10


欢迎任何帮助!感谢您阅读本文。

这可以通过一个简单的正则表达式来解决:
(-124;\++)\ d+(\.\d++)$
。到正则表达式(regex101)。
让我们来看看正则表达式:
(-124; \++/code>)我们首先测试
-
符号、
+
符号或无符号
\d+
这里我们将一个数字与无限(
+
)数字相匹配(
\d
相当于
[0-9]


(\。\d+)
现在到了棘手的部分,
(…)
的意思是“这个或什么都没有”(这个大小写或空的大小写),
\。
是字符
(不要与正则表达式
混淆),
\d+
也是,一到无限位数

请注意,如果要查找平方根后面的数字,请务必确定。如果是这样,这个(Java)模式可以工作:


”(?这很好地回答了我的问题!感谢及时的回答。我最后使用了:
(\-)\d+(\.\d+)
,以便更接近我所需要的:
(\+)
更好地写为
[-+]?
——同样,
(\.\d+)
更好地写为
(\.\d+)
,你为什么要混合
[0-9]
\\d
?它们的意思是一样的,所以混用它们会让人困惑,因为我们开始想为什么,但没有理由。这个答案比另一个选项好。我最终使用了这样的模式!希望这能帮助其他人。谢谢:)
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternTest {

    static Pattern p = Pattern.compile("(?<=√)([-+]?\\d+(\\.\\d+)?)");

    static void testPattern(String input) {
        Matcher matcher = p.matcher(input);
        if (matcher.find()) {
            System.out.println("input: " + input + ", found: " + matcher.group(1));
        } else {
            System.out.println("input: " + input + ", not found");
        }
    }

    public static void main(String[] args) {
        testPattern("1234");
        testPattern("√1234");
        testPattern("√-1234.0");
        testPattern("√+1234.04");
    }
}
input: 1234, not found
input: √1234, found: 1234
input: √-1234.0, found: -1234.0
input: √+1234.04, found: +1234.04