使用正则表达式从字符串日期获取子字符串

本文关键字:字符串 日期 获取 正则表达式 | 更新日期: 2023-09-27 17:56:57

我有这个字符串"Date.2014.07.04"

然后,如果我想使用正则表达式从上面的字符串中获取"07"。

我该怎么做?

我不想使用拆分。

为什么我不想使用拆分?因为当我们拆分时,结果将在字符串数组中。通常我们会尝试获取我们想要的数组索引。就我而言,这将是

var date = "Date.2014.07.04";
date.Split('.')[2];

但是假设我们将日期更新为新字符串(删除所有".")。

var date = "Date20140704";
date.Split('.')[2];

这将引发错误,因为它找不到索引号 2。

通过使用正则表达式,此错误不会发生,如果我们想要的模式在字符串中找不到,它只会返回空字符串。 :)

使用正则表达式从字符串日期获取子字符串

您最好解析日期,然后使用 DateTime.ParseExact 获取所需的部分,但您必须先从日期字符串中删除Date.

DateTime dt = DateTime.ParseExact(strDate.Replace("Date.",""), "yyyy.MM.dd", CultureInfo.InvariantCulture);
int month = dt.Month;

您也可以使用字符串。分裂

string month =  strDate.Split('.')[2];

只需这样做:

"Date.2014.07.04".Split('.')[2];

既然你坚持使用正则表达式,那就这样做:

var value = Regex.Match("Date.2014.07.04",@"(?<='w{4}'.'d{4}'.)'d+").Value

使用日期时间函数(如 ParseExactTryParseTryParseExact 等)是一个很好的建议,因为它也会验证每个部分。但是如果你真的需要正则表达式,看看这个,它也将验证月份部分:

(0?[1-9]|1[0-2])'.'d{2}$

演示