我有一个日期行列表,如
05.22.2013
07.11.2015
12.31.2014
12.05.2015
06.11.2015
11.30.2015
我需要一个RegEx来过滤除12.XX.2015之外的所有内容。
答案 0 :(得分:1)
答案 1 :(得分:0)
由于其他建议会过滤掉以12
开头且在字符串中的任何位置包含2015
的任何字符串,我认为应该发布更精确的解决方案。
您可以使用锚定在模式开头的否定前瞻(?!12\.\d{2}\.2015$)
。如果整个字符串与<start_of_string>12.<digit><digit>.2015<end_of_string>
模式匹配,则匹配失败(=找不到匹配)。请注意,.
必须使用反斜杠进行转义(在某些表示法中,必须加倍)以匹配文字句点符号。 \d{2}
将匹配任何日期(甚至更多,但在这种情况下,所有日期字符串都已预先验证,因此这不是问题)。前瞻性末尾的$
非常重要,因为它意味着字符串应以2015
结尾,不允许更多文本。
使用
^(?!12\.\d{2}\.2015$)\d{2}\.\d{2}\.\d{4}$
请参阅demo
正则表达式解释:
^
- 字符串开头(?!12\.\d{2}\.2015$)
- 过滤2015年12月日期的限制性前瞻\d{2}
- 正好两位数\.
- 文字句号\d{2}
- 正好两位数\.
- 文字句号\d{4}
- 正好是四位数$
- 字符串结束。请注意,在不同的表示法中,反斜杠可能需要加倍。