Regex 正则表达式匹配特定句子加上日期和时间
我试着弄明白如何让正则表达式匹配一些特定的东西,然后是日期和时间。我一辈子都想不出来 我想匹配以下句子,其中日期和时间当然可能是随机的: 荷兰2013年1月25日。14.03瑞典克朗 所以它应该这样匹配:Den dd/mm/yyyy kl。hh.mm skrev 请注意,时间是24小时格式的 有人能帮忙吗?我可以很容易地找到一个匹配日期或时间的示例,但我不知道如何将其与以下特定句子结合起来:(Regex 正则表达式匹配特定句子加上日期和时间,regex,date,sentence,Regex,Date,Sentence,我试着弄明白如何让正则表达式匹配一些特定的东西,然后是日期和时间。我一辈子都想不出来 我想匹配以下句子,其中日期和时间当然可能是随机的: 荷兰2013年1月25日。14.03瑞典克朗 所以它应该这样匹配:Den dd/mm/yyyy kl。hh.mm skrev 请注意,时间是24小时格式的 有人能帮忙吗?我可以很容易地找到一个匹配日期或时间的示例,但我不知道如何将其与以下特定句子结合起来:( 提前感谢只需将它们组合为: Den (0[1-9]|[12][0-9]|3[01])/(0[1-9]|
提前感谢只需将它们组合为:
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.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
仍然匹配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
成为可选的
`Den ([0-3]\d)/([0-1]\d)/(\d{4}) kl\. ([0-2]\d)\.([0-5]\d) skrev`
捕获值以便于验证。可能不是最聪明的解决方案,但此表达式应符合您的要求:
Den\s[0-3][0-9]/[0-1][[0-9]/[0-9][0-9][0-9]\skl.\s[0-2][0-9][0-6][0-9]\sskrev结果证明我真正需要的是: (荷兰……/。/…吉隆坡……瑞典)
既然只是匹配随机字符,因为这个句子是由一个电子邮件客户端自动生成的,不需要实际验证它是否是一个日期,而是只需寻找这个模式,然后丢弃所有的东西。没有人会在正则文本中间特别地写这个。
如果有人想知道,这是用于SpiceWorks回复标题过滤的。Naveeds编辑的答案比我的答案好得多,它更接近于完全验证。例如,我的正则表达式将允许29个小时。我根本无法用它来验证任何内容……难道我不能在我的原始帖子中输入完整的句子示例吗例如,我会在regexpal.com中被抓到吗?对不起,使用了错误的验证器:),但Nava似乎走上了正确的轨道。无论如何,谢谢。尽管如此,如果我输入句子“Den 12/4/2012 kl.14:41 skrev”,我无法让它进行验证例如,我不关心闰年或0000、2月等。它只是捕捉生成的日期,而不是验证日期或其他任何东西。它是捕捉电子邮件中的回复标题。@nickdnk我认为“Den 12/4/2012 kl.14:41 skrev”是无效的输入,不是吗?哦,对不起。它确实有效。可能其他网站刚刚坏了。答案被接受。它确实需要能够匹配个位数的月份!