0

我为此挠头。例如我有:

Date
sometext
somtext
27-7-2013

我想要做的是我想在 Date 关键字之后获取第一个日期格式字符串模式。这是我目前拥有的:

(?i)(?<=date.*)\d+-\d+\d+

但不幸的是,我什么也没得到,如果我只是尝试获取 date 关键字之后的所有字符串,例如

(?i)date.*

我只得到结果:

Date[CR]

我正在使用 Expresso 来测试我的正则表达式。我对使用正则表达式很陌生,所以我不熟悉如何做事。

请帮忙!谢谢!

4

2 回答 2

0

在这种情况下,我不会使用后向断言,无限长度的后向(我认为)仅受 .net 支持。

我会改用捕获组:

(?is)date.*?(\d{1,2}-\d{1,2}-\d{4})

您将在第一个捕获组中找到日期。

在 Regexr 上查看

(?is)正在启用不区分大小写的匹配模式i和单行模式s,这使得.也匹配换行符。

.*?懒惰地匹配任何字符。

(\d{1,2}-\d{1,2}-\d{4})匹配一位或两位数字、一个破折号、一位或两位数字、一个破折号,然后是 4 个数字。

于 2013-06-27T09:14:08.657 回答
0

你可以看看这个正则表达式:

(?i)(?<=Date)[\S\s]*?(\d{1,2}-\d{1,2}-(?:\d{4}|\d{2}))

在您的正则表达式中,您还缺少-before last \d+。此正则表达式还将处理year具有四位数字和两位数字的部分。

于 2013-06-27T09:49:52.187 回答