gpt4 book ai didi

java - 用于匹配多种日期格式的正则表达式?

转载 作者:行者123 更新时间:2023-12-02 03:35:34 25 4
gpt4 key购买 nike

抱歉,如果这是一个菜鸟问题,但我对正则表达式不太满意,并且(到目前为止)这有点超出了我的理解范围。

我的困境是,我们有大量的 ID 徽章被扫描到 Android 应用程序中,而我正在尝试解析一些日期。

例如,某些日期的表示方式如下:

"ISS20141231"   format = yyyyMMdd   desired output = "20141231"
"ISS12312014" format = MMddyyyy desired output = "12312014"
"ISS12-31-2014" format = MM-dd-yyyy desired output = "12312014"

目前我有一个正则表达式模式:

Pattern p = Pattern.compile("ISS(\\d{8})");
Matcher m = p.matcher(scanData);

对于前两个示例效果很好,但最近我意识到我们偶尔也会有使用破折号(或斜杠)作为分隔符的日期。

是否有一种有效的方法来提取这些日期,而无需编写多个模式并循环检查每个模式是否匹配?

可能类似于:“ISS([\d{8} (\d{2}\w\d{2}\w\d{4}) (\d{4}\w\d{2}\w\d{2})])"

谢谢!!

[编辑]只是为了让事情变得更清楚一点。子字符串(“ISSMMddyyyy”)来自一个更大的字符串,可以位于其中的任何位置。因此,正则表达式必须在原始(200+ 字节)字符串中搜索匹配项。

最佳答案

如果该日期字符串实际上是较大字符串的子字符串,因此您需要正则表达式才能搜索该模式,则可以将正则表达式修改为:

ISS([\\d\\-/]{8,10})

然后在检索捕获组时,去掉连字符和斜杠。

String dateStr = m.group(1).replaceAll("[/\\-]", "");

关于java - 用于匹配多种日期格式的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37492870/

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