C# 我可以使用什么正则表达式来匹配日期格式和时间格式?
我需要从如下字符串中检索日期和时间: 文件名\u 20170818\u 010138.xml我当前正在使用C# 我可以使用什么正则表达式来匹配日期格式和时间格式?,c#,regex,C#,Regex,我需要从如下字符串中检索日期和时间: 文件名\u 20170818\u 010138.xml我当前正在使用 (@"(?<date>\d\d\d\d\d\d\d\d)") 这对约会很有效,但是什么是获得时间的最好方式呢 在另一组 @"(?<Date>\d{8})_(?<Time>\d{6})" 这将为您提供一个日期组和一个时间组。使用RegexOptions.ExplicitCapture 如果没有正则表达式,我会这样做: string input = "f
(@"(?<date>\d\d\d\d\d\d\d\d)")
这对约会很有效,但是什么是获得时间的最好方式呢
在另一组
@"(?<Date>\d{8})_(?<Time>\d{6})"
这将为您提供一个日期组和一个时间组。使用RegexOptions.ExplicitCapture 如果没有正则表达式,我会这样做:
string input = "filename_20170818_010138.xml";
var splitResult = input.Split(new string[] { "_", "." }
, StringSplitOptions.RemoveEmptyEntries);
var data = DateTime.ParseExact(splitResult[1] + splitResult[2]
, "yyyyMMddHHmmss"
, System.Globalization.CultureInfo.InvariantCulture);
如果要使用u或处理文件名。
您可以用splitResult.Length-3和splitResult.Length-2替换[1]和[2]。我把越界的例外交给了你 1首先获取一些关于正则表达式的文档,特别是量词部分。然后,要转换成c日期时间,你可以使用这个。除了Cosmin Cretu答案,我将添加一个\。在正则表达式的末尾匹配扩展名之前的点,以确保如果文件名以8位结尾,我不会得到错误的块。