gpt4 book ai didi

java - 在 Java 中使用正则表达式查找字符串中的 12 小时格式时间

转载 作者:行者123 更新时间:2023-12-01 21:15:47 25 4
gpt4 key购买 nike

我正在尝试使用 Java 中的正则表达式在字符串中查找时间。这是正则表达式:

\d{1,2}?:\d\d(?)(am|pm)??

应该查找 1 或 2 位数字,后跟一个冒号,再加上两位数字,然后是“am”或“pm”(无论大小写)。

它基本上有效,但如果我将整个正则表达式包装在捕获组中,我只会得到 hh:mm。例如,“12:34am”仅返回“12:34”。没有"is"。

更新:完整代码示例

Pattern p = Pattern.compile("\\d{1,2}?:\\d\\d(?)(am|pm)??");
Matcher matcher = p.matcher("12:34AM");
Assert.assertTrue(matcher.find());
Assert.assertEquals("12:34AM", matcher.group());

有人知道为什么吗?

最佳答案

您可能想要使用 \b(?:[01]?\d|2[0-3]):[0-5]?\d(?:[ap ]m)?\b 来匹配时间,并设置不区分大小写的标志,甚至使用替代方案通过 am/pm 来区分 24 小时表示法和 12 小时表示法>

您当前的模式使用惰性可选模式来匹配 am/pm ((am|pm)??),如下所示位于模式末尾,它永远不会匹配(除非在 .matches() 而不是 .find() 的上下文中使用,因为它强制完全匹配)。

老实说,我不确定您的模式中的 (?)

关于java - 在 Java 中使用正则表达式查找字符串中的 12 小时格式时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40188449/

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