我对此感到头疼。例如,我有:
Date
sometext
somtext
27-7-2013
我想做的是获得date关键字之后的第一个日期格式字符串模式。这是我目前拥有的:
(?i)(?<=date.*)d+-d+d+
但不幸的是,我什么都没有得到,如果我只是试图获得日期关键字后面的所有字符串,例如
(?i)date.*
我只得到的结果是:
Date[CR]
我正在使用Expresso测试我的正则表达式。我对使用regex很陌生,所以我不熟悉如何做事。
请帮忙!谢谢
在这种情况下,我不会使用lookbehind断言,而且(我认为)只有.net.支持无限长度的lookbehinds
我会使用一个捕获组:
(?is)date.*?(d{1,2}-d{1,2}-d{4})
您将在第一个捕获组中找到日期。
在Regexr 上查看
(?is)
启用了与大小写无关的匹配模式i
和单行模式s
,这使得.
也匹配换行符。
.*?
延迟匹配任何字符。
(d{1,2}-d{1,2}-d{4})
匹配一个或两个数字、一个短划线、一个或二个数字、短划线,然后是4个数字。
您可以查看以下正则表达式:
(?i)(?<=Date)[Ss]*?(d{1,2}-d{1,2}-(?:d{4}|d{2}))
在正则表达式中,您还缺少最后一个d+
之前的-
。此外,此正则表达式将处理具有四位数字和两位数字的year
部分。