我已经尝试弄清楚如何使正则表达式匹配特定的日期和时间。我不能为我的生活搞清楚!
我想匹配以下句子,当然日期和时间可能是随机的:
Den 25/01/2013 kl。 14.03 skrev
所以它应该像这样匹配:Den dd / mm / yyyy kl。 hh.mm skrev
请注意,时间是24小时格式。
有人可以帮忙吗?我可以很容易地找到一个匹配日期或时间的例子,但我不知道如何将它与这个特定的句子结合起来:(
提前致谢
答案 0 :(得分:2)
只需将它们组合为:
即可使用它Den (0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/(0{3}[1-9]|((?!0{3}\d)\d{4})) kl\. ([01][0-9]|[2[0-3])\.([0-5][0-9]) skrev
注意:日期未经过正确验证。将匹配30/02/2000
Den
匹配Den
。
(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/\d{3}[1-9]
与日期匹配。 0{3}[1-9]|((?!0{3}\d)\d{4})
以年为单位避免 0000 。
kl\.
匹配kl.
\
之前的.
是逃避.
这是一个特殊字符
在正则表达式
([01][0-9]|[2[0-3])\.([0-5][0-9])
匹配从 00.00 到 23.59
skrev
匹配skrev
。
以下验证日期更好
Den ((0[1-9]|[12][0-9]|3[01])/(?=(0[13578]|1[02]))(0[13578]|1[02])|(0[1-9]|[12][0-9]|30)/(?=(0[469]|11))(0[469]|11)|(0[1-9]|[12][0-9])/(?=(02))(02))/(0{3}[1-9]|((?!0{3}\d)\d{4})) kl\. ([01][0-9]|[2[0-3])\.([0-5][0-9]) skrev
仍然匹配29/02/1999 - 闰年未经验证
要匹配单个数字的天数和月份,请将日期部分替换为以下内容:
(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[0-2])/(0{3}[1-9]|((?!0{3}\d)\d{4}))
?
使前一部分成为可选项,即0
成为可选项。
答案 1 :(得分:0)
`Den ([0-3]\d)/([0-1]\d)/(\d{4}) kl\. ([0-2]\d)\.([0-5]\d) skrev`
捕获值以便于验证。
答案 2 :(得分:0)
可能不是最聪明的解决方案,但此表达式应符合您的要求:
传\ S [0-3] [0-9] / [0-1] [[0-9] / [0-9] [0-9] [0-9] [0-9] \ SKL。\ S [0-2] [0-9]。[0-6] [0-9] \ sskrev
答案 3 :(得分:0)
原来我真正需要的是:
(Den .. / .. / .... kl。..... skrev)
从那以后。只是匹配随机字符,并且因为这句话是由电子邮件客户端自动生成的,所以不需要实际验证它是否是日期,而只是查找此模式并丢弃之后的所有内容。在常规文本中,没有人会这么具体地写出来。
如果有人想知道,这是针对SpiceWorks回复标题过滤的。