gpt4 book ai didi

java - 为什么我的正则表达式不适用于日期?

转载 作者:行者123 更新时间:2023-12-01 11:40:06 25 4
gpt4 key购买 nike

我在使用正则表达式匹配字符串中的日期时遇到问题。实际上我有很多“日期格式”需要匹配,但第一个不起作用,我不明白为什么它不起作用......

格式类似于“2013年9月12日”或“2014年5月6日”或“2014年6月2日”...

在我的字符串文本中,有以下日期:“2014 年 7 月 4 日”。

这是我的代码:

Pattern p = Pattern.compile("[a-zA-Z]+ [0-3]?[0-9], (1|2)\\d{3}", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);
System.out.println(m.group(1));

但是出现了这个错误:

Exception in thread "main" java.lang.IllegalStateException: No match found

我什至尝试使用较小的正则表达式,但它仍然不匹配任何内容。

提前感谢您的帮助!

最佳答案

在调用 Matcher#group 之前,您需要调用 Matcher#find()Matcher#matches()

否则,不会执行匹配,因此您既没有填充整个组,也没有填充任何单个反向引用。

上面提到的两种方法都会返回 boolean 值,这将帮助您推断所需的组是否包含任何文本。

一个典型的习语是:

if (matcher.find()) {
// get the group(s)
}

文档 here

另一方面,我建议您使用 DateFormat 而不是日期的正则表达式 - API here

关于java - 为什么我的正则表达式不适用于日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29601455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com