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