【发布时间】:2016-02-18 11:09:17
【问题描述】:
如何从字符串中只提取 XX:YY 形式的时间部分?
例如 - 来自如下字符串:
sdhgjhdgsjdf12:34knvxjkvndf,我只想提取12:34。
(当然,周围的字符也可以是空格)
当然我可以找到分号并得到两个字符之前和两个字符之后,但它是 bahhhhhh .....
【问题讨论】:
如何从字符串中只提取 XX:YY 形式的时间部分?
例如 - 来自如下字符串:
sdhgjhdgsjdf12:34knvxjkvndf,我只想提取12:34。
(当然,周围的字符也可以是空格)
当然我可以找到分号并得到两个字符之前和两个字符之后,但它是 bahhhhhh .....
【问题讨论】:
您可以使用这个基于环视的正则表达式进行匹配:
(?<!\d)\d{2}:\d{2}(?!\d)
在 Java 中:
Pattern p = Pattern.compile("(?<!\\d)\\d{2}:\\d{2}(?!\\d)");
RegEx 拆分:
(?<!\d) # negative lookbehind to assert previous char is not a digit
\d{2} # match exact 2 digits
: # match a colon
\d{2} # match exact 2 digits
(?!\d) # negative lookahead to assert next char is not a digit
完整代码:
Pattern p = Pattern.compile("(?<!\\d)\\d{2}:\\d{2}(?!\\d)");
Matcher m = pattern.matcher(inputString);
if (m.find()) {
System.err.println("Time: " + m.group());
}
【讨论】:
Matcher 类并调用 p.matcher 后跟 matcher.find 和 matcher.group 以获得您的价值