C#Regex Pattern删除列表中的所有内容

时间:2016-05-06 16:50:23

标签: c# regex list

我有一个包含许多项目的字符串列表,其中一些以下列格式的日期/时间开头:

2016-05-04 18:46:05.115 Copyright (c) 2014 Microsoft Corporation

我希望循环并从列表中包含该格式的所有项目中删除该日期/时间。

目前我有这个:

var regexDateTime = "/^(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})$/";
preperationMessages = preperationMessages
    .Select(x => Regex.Replace(x, regexDateTime, ""))
    .ToList();

根本没有过滤任何日期。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

使用此正则表达式:

var regex = @"^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\.(\d{3})";

正则表达式的问题在于' $'最后,它意味着字符串结束,而不是你想要的。另外一点是,你不要在csharp的正则表达式的开头和结尾使用斜杠,就像你在javascript中一样。

答案 1 :(得分:0)

如果您不想使用RegEx,这也有效(根据您的邮件集合的大小,这可能会更快:

int dateChars = 23;
DateTime output;

// Remove leading date(s)
preparationMessages = preparationMessages
    .Select(x => x.Length > dateChars && DateTime.TryParse(x.Substring(0, dateChars), out output) ? x.Substring(dateChars+1) : x)
    .ToList();