gpt4 book ai didi

各种日期格式的正则表达式

转载 作者:行者123 更新时间:2023-12-03 20:21:41 25 4
gpt4 key购买 nike

我是 Regex 的新手,我想知道是否有人可以提供帮助。我什至不确定 Regex 是否是我想要做的事情的最佳选择。

我有一个我正在查看的字符串数组。我想在数组中找到匹配各种日期格式的所有项目。以下是我尝试匹配的示例格式。

2012 年 4 月 1 日 - 当天没有前导零的短月份名称 - 匹配

2012 年 4 月 1 日 - 日期前导零的短月份名称 - 匹配

2012 年 4 月 1 日 - 全文本月份名称,当天没有前导零 - 匹配

2012 年 4 月 1 日 - 日期前导零的全文月份名称 - 匹配

2012 年 4 月 1 日 - 月和日没有前导零 - 匹配

04/01/2012 - 月和日的前导零 - 匹配

02/29/2012 - 如果年份是一个飞跃,则允许 2/29 - 匹配

2001 年 13 月 12 日 - 1-12 月以外的月份 - 不匹配

02/30/2012 - 一个月中有太多天 - 没有匹配

02/29/2011 - 如果不是闰年 - 没有匹配

我开发的当前正则表达式。

\b(?:(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May?|Jun(?:e)?|Jul(?:y) |Aug(?:ust)?|Sep(?:t(?:ember)?)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?))|(0?[1-9]|1[012])[- /.,](0?[1-9]|1[0-9]|2[0-9]|3[01])

我可以开发正则表达式来消除这些格式的各个部分,但是将它们链接在一起只会得到一个匹配项。目前它匹配两次(月、月 + 日)。我只希望它在整个比赛都满足时匹配。

谢谢

有限的

最佳答案

为什么要在一个简单的正则表达式中完成所有操作?这听起来比应该的更复杂。此外,例如考虑将来添加新格式?这不会很简单。我宁愿将相似的模式分组到一个正则表达式中,例如“2012 年 4 月 1 日”、“2012 年 4 月 1 日”为一组,然后是“04/01/2012”、“02/30/2012”。无论如何,我想在某些时候,您需要将日期的不同组成部分处理为通用表示。为此,您可能需要专用代码。

这可能不是您想要的答案,但作为一般原则,始终尝试将大问题分解为您可以轻松解决的小问题。

干杯,

何塞

关于各种日期格式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516129/

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