Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以使用什么正则表达式来匹配日期格式和时间格式?_C#_Regex - Fatal编程技术网

C# 我可以使用什么正则表达式来匹配日期格式和时间格式?

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

我需要从如下字符串中检索日期和时间: 文件名\u 20170818\u 010138.xml我当前正在使用

(@"(?<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位结尾,我不会得到错误的块。