为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式模式:未封闭组

正则表达式模式:未封闭组

慕少森 2023-01-05 10:07:05

我需要匹配以下日期模式:


dd-mmm-yyyy (TBC)

dd-mmm-yyyy (TBD)

dd-mmm-yyyy

但我得到以下异常,我不明白错误是什么。我很确定日期部分,我怀疑错误的来源是必须可选的 TBC/TBD 部分。


 java.util.regex.PatternSyntaxException: Unclosed group near index 614

^(29-02-(2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26]))))[ \(TB(C|D)\)]$|^((0[1-9]|1[0-9]|2[0-8])-((FEB)|(feb)|(Feb)|(FEV)|(fev)|(Fev))-((19|2[0-9])[0-9]{2}))[ \(TB(C|D)\)]$|^((0[1-9]|[12][0-9]|3[01])-(((JAN)|(jan)|(Jan))((MAR)|(mar)|(Mar))((MAY)|(may)|(May)|(MAI)|(mai)|(Mai))((JUL)|(jul)|(Jul)|(JUI)|(jui)|(Jui))((AUG)|(aug)|(Aug)|(AUO)|(auo)|(Auo))((OCT)|(oct)|(Oct))((DEC)|(dec)|(Dec)))-((19|2[0-9])[0-9]{2}))[ \(TB(C|D)\)]$|^((0[1-9]|[12][0-9]|30)-(((APR)|(apr)|(Apr)|(AVR)|(avr)|(Avr))((JUN)|(jun)|(Jun)|(JUI)|(jui)|(Jui))((SEP)|(sep)|(Sep)((NOV)|(nov)|(Nov))-((19|2[0-9])[0-9]{2}))[ \(TB(C|D)\)]$

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ^

你有什么提示吗?提前致谢


查看完整描述

1 回答

?
Qyouu

TA贡献1518条经验 获得超10个赞

你的模式不是最优的,甚至是错误的:

  • 月份名称之间缺少交替运算符

  • 重复次数太多,只是大小写不同:使用不区分大小写的标志

  • [ \(TB(C|D)\)]很可能是错字,因为它是一个匹配其中定义的单个字符的字符类,您需要(?: \(TB[CD]\))?一个可选的非捕获组。

采用

(?i)^29-02-(?:2[048]00|(?:19|2[0-9](?:0[48]|[2468][048]|[13579][26])))(?: \(TB(C|D)\))?$|^(?:0[1-9]|1[0-9]|2[0-8])-fe[vb]-(?:19|2[0-9])[0-9]{2}(?: \(TB(C|D)\))?$|^(0[1-9]|[12][0-9]|3[01])-(jan|ma[ryi]|ju[li]|au[go]|oct|dec)-(?:19|2[0-9])[0-9]{2}(?: \(TB(C|D)\))?$|^(?:0[1-9]|[12][0-9]|30)-(?:a[pv]r|ju[ni]|sep|nov)-(?:19|2[0-9])[0-9]{2}(?: \(TB(C|D)\))?$

请参阅正则表达式演示


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信