![](/img/trans.png)
[英]Regular expression to extract Date value specified in word from the string in Java
[英]Using regular expression in Java to extract date from string in the format 01OCT12 14:26
我正在从文件或字符串中读取日期,格式为01OCT12 14:26
我知道日期将是OCT或11月,这可能有助于我编写更精确的正则表达式。
我已经读过Java提供的许多使用正则表达式的选项,例如Matcher&Pattern以及Scanner类,希望能找到帮助解决该问题的最简洁方法。
如果您知道日期在字符串中的何处,则可以使用SimpleDateFormat
进行解析,而不要使用正则表达式:
DateFormat dateFormat = new SimpleDateFormat("yyMMMdd kk:mm", Locale.ENGLISH);
Date result = df.parse(stringDate);
(我假设01
是年, 12
是天,但是如果将其取反,则需要将日期格式字符串中的yy
和dd
反。)
下面是使用正则表达式的示例:
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]
匹配的捕获组 $
表示以 您可能不希望使用正则表达式来完成此任务。 尽管如此,我相信这就是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.