如何在java中解析范围输入
我想用Java解析一系列数据(例如100-2000)。此代码是否正确:如何在java中解析范围输入,java,Java,我想用Java解析一系列数据(例如100-2000)。此代码是否正确: String patternStr = "^(\\\\d+)-(\\\\d+)$"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(inputStr); if(matcher.find()){ // Doing some parser } 不,你是在逃避数字
String patternStr = "^(\\\\d+)-(\\\\d+)$";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.find()){
// Doing some parser
}
不,你是在逃避数字
它应该是:“^(\\d+)-(\\d+)$”
意思是:
- 输入开始:
^
- 第1组:1个以上数字:
(\\d+)
- 连字符文字:
-
- 第2组:1个以上数字:
(\\d+)
- 输入结束:
$
\\d+
表达式周围的括号
在本例中,您正在解析范围的表示形式
如果需要实际的范围类,可以使用[minmax]
习惯用法,其中“min”和“max”是数字,例如[0-9]
正如Andreas所提到的,如果要匹配整个输入,可以使用
String.matches
,而不使用模式
-Matcher
习惯用法和^
和$
反斜杠太多,您可以使用matches()
而不使用锚(^$)
至于你的问题“这段代码正确吗”,你所要做的就是用main
方法将代码包装在一个类中并运行它,你会得到答案:No问题是如何“解析”,而不是如何验证,所以如果你“去掉括号”,如何提取范围的min
和max
值问题是关于“数据范围(例如100-2000)”,那么这与正则表达式字符类范围有什么关系呢?
String inputStr = "100-2000";
String patternStr = "(\\d+)-(\\d+)";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
System.out.println(matcher.group(1) + " - " + matcher.group(2));
}