正则表达式只找到第二个日期

时间:2015-11-05 16:07:05

标签: regex

这是来自csv文件的示例行:

A|ZHZ020|SAP|000005325602345|05.11.2015|37,58|EUR|+|I|2,363200|17895,22|05.11.2015|08|XY

我想只搜索 last 日期(在这种情况下是 second )。我的正则表达式:

\W[0-9]{2}\.[0-9]{2}\.[0-9]{4}\W

不能按预期工作,因为它匹配两个日期。

我不知道该怎么做。是否有可能以这样的方式编写正则表达式"跳过第一场比赛"?

1 个答案:

答案 0 :(得分:2)

使用负面展望:

\W\d\d\.\d\d\.\d{4}\W(?!.*\W\d\d\.\d\d\.\d{4}\W)

请参阅live demo

如果在输入的某个地方某处 匹配,那么前面的负面预测会确保只会发生匹配(这在逻辑上等同于仅匹配 last 命中)。

另请注意使用较短的\d("数字")而不是较长的[0-9](包含所有数字字符的字符类)。