从Java中固定格式的字符串中提取数字
我有一串格式:
"A hr B min to C hr D min"
其中 A、B、C、D 将是整数。我想从这个字符串中提取 A、B、C、D。A、B、C、D 可以是单个或多位整数,我现在并不真正关心验证(例如 C、D 理想情况下在 0 到 59 之间),因为可以稍后处理。
在 Java 中实现这一目标的最佳方法是什么?
回答
假设此文本可能出现在较大的文本中,并且您的目标短语可能重复多次,我们可以尝试匹配以下模式:
b(d+) hr (d+) min to (d+) hr (d+) minb
这是一个示例 Java 代码:
String input = "blah blah 1 hr 5 min to 2 hr 10 min blah blah";
String regex = "b(d+) hr (d+) min to (d+) hr (d+) minb";
Pattern r = Pattern.compile(regex);
Matcher m = r.matcher(input);
while (m.find()) {
System.out.println("Found values: (" + m.group(1) + ", " + m.group(2) + ", " +
m.group(3) + ", " + m.group(4) + ")");
}
这打印:
Found values: (1, 5, 2, 10)