我正在从文件或字符串中读取日期,格式为01OCT12 14:26

我知道日期将是OCT或11月,这可能有助于我编写更精确的正则表达式。

我已经读过Java提供的许多使用正则表达式的选项,例如Matcher&Pattern以及Scanner类,并希望能找到帮助解决该问题的最简洁方法。

最佳答案

下面是使用正则表达式的示例:

        String example = "01OCT12 14:26";
        String pattern = "^(\\d{2})(?:OCT|NOV)(\\d{2}) (\\d{1,2}):(\\d{2})$";

        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(example);

        if (m.find())
        {
            //prints example
            System.out.println(m.group());

            System.out.println(m.group(1)); //prints 01
            System.out.println(m.group(2)); //prints 12
            System.out.println(m.group(3)); //prints 14
            System.out.println(m.group(4)); //prints 26
        }


"^(\\d{2})(?:OCT|NOV)(\\d{2}) (\\d{1,2}):(\\d{2})$"细分:


^表示以
(...)是一个捕获组,表示...是您要捕获的模式

在这种情况下,模式为\\d{2},表示[0-9]中任意两位

(?:OCT|NOV)

?:表示不捕获以下内容
OCT|NOV表示必须是OCT或NOV

(\\d{1,2})是与1个或2个数字匹配的捕获组[0-9]
最后,$表示以


您可能不希望使用正则表达式来完成此任务。尽管如此,我相信这就是您想要的。

10-07 12:19