我正在使用一些正则表达式来查找crontab.guru
或crontab.guru
形式的日期字符串。
我正在使用的正则表达式是Jan 12, 2015
并且它正常工作,但问题是文件上的字符串也是一些形式:
Feb 3, 1999
或\w+\s\d{1,2},\s\d{4}
我也匹配它们。
如何避免这些非日期匹配?我的方法是:
Weg 58, 4047
,Strasse 1, 4482
等)必须始终为3。Jan
或Feb
开始。问题是我不知道如何将这两个选项添加到我的正则表达式中。有什么帮助吗?
您可以在此处进行测试:https://regex101.com/r/bN2pO0/1
提前致谢。
答案 0 :(得分:1)
正如您使用\d{1,2}
匹配数字1或2次而\d{4}
匹配数字4次,您可以使用\w{3}
匹配字符3次。< / p>
对于这一年,您可以使用管道&#34;或&#34; operator |
。
\w{3}\s\d{1,2},\s(?:1|2)\d{3}
虽然,这也将匹配形式为Abc xy,1xyz
的非日期如果你愿意,可以使用强力方法,或者只是摆脱正则表达式并使用代码来捕获日期。
蛮力:
(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s[0-2]?[0-9],\s[12]\d{3}
答案 1 :(得分:1)
由于月份不会发生变化(即:1月份之间的一致值 - Decemeber,我们可以设置3个起始字符。)
然后,我们可以使用OR |
运算符选择以1
或2
/((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{1,2},\s(1|2)\d{3})/ig