RegEx匹配特定句子加上日期和时间

时间:2013-01-28 09:37:48

标签: regex date sentence

我已经尝试弄清楚如何使正则表达式匹配特定的日期和时间。我不能为我的生活搞清楚!

我想匹配以下句子,当然日期和时间可能是随机的:

Den 25/01/2013 kl。 14.03 skrev

所以它应该像这样匹配:Den dd / mm / yyyy kl。 hh.mm skrev

请注意,时间是24小时格式。

有人可以帮忙吗?我可以很容易地找到一个匹配日期或时间的例子,但我不知道如何将它与这个特定的句子结合起来:(

提前致谢

4 个答案:

答案 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回复标题过滤的。