【问题标题】:Java: Extracting a specific REGEXP pattern out of a stringJava:从字符串中提取特定的 REGEXP 模式
【发布时间】:2016-02-18 11:09:17
【问题描述】:

如何从字符串中只提取 XX:YY 形式的时间部分?

例如 - 来自如下字符串:

sdhgjhdgsjdf12:34knvxjkvndf,我只想提取12:34

(当然,周围的字符也可以是空格)

当然我可以找到分号并得到两个字符之前和两个字符之后,但它是 bahhhhhh .....

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您可以使用这个基于环视的正则表达式进行匹配:

    (?<!\d)\d{2}:\d{2}(?!\d)
    

    RegEx Demo

    在 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());
    }
    

    【讨论】:

    • 看起来很棒!但是我怎样才能从字符串中提取时间呢?谢谢!
    • 在 Java 中使用 Matcher 类并调用 p.matcher 后跟 matcher.findmatcher.group 以获得您的价值
    • 是的!我已经设法找到了这个解决方案!非常感谢!
    • 太好了,我也提供了完整的代码供参考。
    • ideone.com/2EzLIz - 不需要添加空格,环顾四周不消耗字符。
    猜你喜欢
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2022-12-18
    相关资源
    最近更新 更多