0

我已经尝试弄清楚如何使正则表达式匹配特定的内容,然后是日期和时间。我这辈子都想不通!

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

书房 25/01/2013 吉隆坡。14.03 skrev

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

请注意,时间采用 24 小时格式。

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

提前致谢

4

4 回答 4

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

注意:日期未正确验证。将匹配 2000 年 2 月 30 日

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.0023.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

仍然匹配 1999 年 2 月 29 日 - 没有验证闰年与否

要匹配单个数字的日期和月份,请将日期部分替换为以下内容:

(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[0-2])/(0{3}[1-9]|((?!0{3}\d)\d{4}))

使前面的部分成为可选的?,即0成为可选的。

于 2013-01-28T09:43:07.900 回答
0
`Den ([0-3]\d)/([0-1]\d)/(\d{4}) kl\. ([0-2]\d)\.([0-5]\d) skrev`

捕获值以便于验证。

于 2013-01-28T09:52:57.053 回答
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

于 2013-01-28T09:54:08.313 回答
0

原来我真正需要的是:

(Den ../../.. kl. .. skrev)

自从 。只匹配随机字符,并且由于这句话是由电子邮件客户端自动生成的,因此无需实际验证它是否是日期,而只需查找此模式并丢弃之后的所有内容。没有人会在常规文本的中间写得如此特别。

如果有人想知道,这是用于 SpiceWorks 回复标头过滤的。

于 2013-02-08T10:02:43.737 回答