使用此表单获取数字\ d \ s \ d \ d \ s \ d

时间:2015-06-07 10:04:34

标签: java regex

我正在尝试使用此形式获取简单中的数字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

2 个答案:

答案 0 :(得分:4)

你需要使用外观。

Pattern pattern = Pattern.compile("(?<=\\d\\s)\\d{2}(?=\\s\\d)");

这不需要修剪空间。

DEMO

  • (?<=\\d\\s)肯定的外观,它断言匹配必须以数字和空格开头。

  • \d{2}正好两位数。

  • (?=\\s\\d)断言匹配的数字后面必须跟一个空格和一个数字。

答案 1 :(得分:0)

您的问题不是您尝试匹配的模式。这与您概述的4 60 1匹配。问题是您尝试使用Integer.parseInt()解析整个匹配 - 并且显然这不是有效的整数。

假设您希望得到数字4601,您需要在解析之前清理输入(删除空格):

value = Integer.parseInt(m.group().trim().replaceAll("\\s", ""));

编辑:在第二次阅读时,您的模式似乎无法提供您想要的输出,因此此答案无法解决您的实际问题。