如何使用正则表达式从字符串中提取日期

我正在寻找可以从以下html中提取日期的正则表达式

British Medical Journal, 29.9.12, pp.37-41.

并以29/09/12的格式转换它

匹配这种模式: –

 (\d+)[.](\d+)[.](\d+) 

并替换为: –

 $1/$2/$3 

\d用于匹配digits 。 使用量词(+) ,您将匹配一个或多个数字。 现在,在正则表达式中, dot(.)是一个元字符,匹配任何字符。 要按字面顺序匹配period ,您需要将其转义,或在字符类中使用它。


要转换为特定的Date Format ,例如: – 转换9 – > 09 ,您可以使用MatchEvaluator : –

 string input = "British Medical Journal, 29.9.12, pp.37-41."; Regex reg = new Regex(@"(\d+)[.](\d+)[.](\d+)"); string result = reg.Replace(input, delegate(Match m) { return m => DateTime.Now.ToString("dd/MM/yy") }); 

你可以检查它是否有效。

这是正则表达式模式: \d{1,2}\.\d{1,2}\.\d{1,2}

以下是如何将此字符串解析为DateTime的示例:

 DateTime.ParseExact("29.9.12", "dMyy", CultureInfo.InvariantCulture); 

(\d{4})[-](\d{2})[-](\d{2})使用此正则表达式选择2017-01-23格式的日期