我正在尝试使用此形式获取简单中的数字28
整数+空格+整数+整数+空格+整数我已尝试使用此常规表达式\\s\\d\\d\\s
但我得到两个数字{ {1}}和11
使用此表达式28
我收到此错误\\d\\s\\d\\d\\s\\d
。
该数字不应该包含此格式字母+空格+整数+整数+空格。
我该如何解决?
简单:
java.lang.NumberFormatException: For input string: "4 60 1"
代码:
ZOB/Hauptbahnhof Bussteig 11 20:04 20:34 28 21:08 21:40 22:08 22:40 23:08 23:40 00:30
答案 0 :(得分:4)
你需要使用外观。
Pattern pattern = Pattern.compile("(?<=\\d\\s)\\d{2}(?=\\s\\d)");
这不需要修剪空间。
(?<=\\d\\s)
肯定的外观,它断言匹配必须以数字和空格开头。
\d{2}
正好两位数。
(?=\\s\\d)
断言匹配的数字后面必须跟一个空格和一个数字。
答案 1 :(得分:0)
您的问题不是您尝试匹配的模式。这与您概述的4 60 1
匹配。问题是您尝试使用Integer.parseInt()
解析整个匹配 - 并且显然这不是有效的整数。
假设您希望得到数字4601
,您需要在解析之前清理输入(删除空格):
value = Integer.parseInt(m.group().trim().replaceAll("\\s", ""));
编辑:在第二次阅读时,您的模式似乎无法提供您想要的输出,因此此答案无法解决您的实际问题。