我正在从文件或字符串中读取日期,格式为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]
最后,
$
表示以您可能不希望使用正则表达式来完成此任务。尽管如此,我相信这就是您想要的。