【发布时间】:2019-02-21 00:58:28
【问题描述】:
我正在尝试从 JAVA 中的字符串中制作可以给我小时和分钟的模式。 无论我尝试一个或多个示例都失败了。
可以有以下组合。
- 1 小时
- 2 小时
- 1 小时 20 分钟
- 3 小时 30 分钟
- 3 小时 1 分钟
- 1 小时 1 分钟
- 1 分钟
-
10 分钟
Pattern p = Pattern.compile("([\\d]+)\\s+[hour|hours]*\\s*([\\d]*)[^\\d]*"); Matcher m = p.matcher("8 hours 2 minutes"); // if an occurrence if a pattern was found in a given string... if (m.find()) { System.out.println("found"); System.out.println(m.group(1)); // hours System.out.println(m.group(2)); // minutes }
【问题讨论】:
-
这不仅仅是您的正则表达式模式的问题。您的逻辑将需要针对匹配的组数以及其中的内容运行额外的 if 语句。
-
就像您期望上述示例的输出一样???
-
你需要重新考虑你的代码,但我会给你这个模式让你走上正确的轨道regex101.com/r/DNCYMl/2
标签: java regex pattern-matching