【发布时间】:2019-10-15 14:22:48
【问题描述】:
我正在尝试组合一个正则表达式语句以匹配以下每种日期格式。
* Mar 7, 2017
Mar. 7, 2017
* March 7, 2017
3-7-2017
03-07-2017
3-7-17
03-07-17
* 03/7/2017
* 03/07/17
* 3/7/17
Mar-07-2017
Mar-7-2017
March-07-2017
下面的正则表达式匹配上面用星号表示的日期格式。我徒劳地尝试添加我已经拥有的东西,但没有成功。
([0-9]+)/([0-9]+)/([0-9]+)|([12]\d{3}-(0[1-9]|1[ 0-2])-(0[1-9]|[12]\d|3[01]))|\w+\s\d{2},\s\d{4}|(?i)\ b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?: y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec](?:ember)?)\b (?:0?[1-9]|[1-2][0-9]|3[01]),? \d{4}
我们总是感谢任何帮助!
* 额外问题 *
在某些情况下,可能有多个日期匹配,我需要它来查找某个单词后面的匹配项。过去,我通过在句点后的括号之间括起正则表达式语句来使用以下语法。
(?<=Word).(StatementHere)
【问题讨论】:
-
2017 年 7 月 3 日(标准)日期格式怎么样?如果你不接受 D / M / Y,你就排除了世界上的大多数人。
-
虽然这可能是真的,但我只需要它与我列出的格式相匹配。如果有一个声明可以涵盖您列出的格式,我也很乐意接受:)。我的需要不需要它。
-
您使用的是 PCRE (php),还是 Perl 或 Ruby?
-
不确定如何回答这个问题,因为我不一定会使用其中任何一个。我将内容复制到 Notepad++ 中,然后使用“查找”并将搜索模式设置为使用正则表达式。
-
Notepad++ 使用 PCRE,不过没关系。我只是想用一些函数优化正则表达式。
标签: regex regex-negation regex-lookarounds regex-group regex-greedy