正则表达式分裂,同时保持deliminator c#

时间:2017-04-18 14:30:58

标签: c# regex split

我有一个像这样的字符串: “07/04/2017 16:09:03作者:Joe Bloggs)由Joe Bloggs添加07/04/2017 17:03:04)更新了”

我想将字符串拆分为注释列表。上面的字符串示例包含两个单独的注释,我想将其拆分为一个列表。我已经确定每个新评论都以日期开头。所以对于每个日期,id都喜欢拆分字符串。

我尝试使用以下正则表达式模式 '\ d {1,2} \ / \ d {1,2} \ / \ d {4}' 检测日期。

var sqlComments = "07/04/2017 16:09:03 by Joe Bloggs) Added 07/04/2017 17:03:04 by Joe Bloggs) Updated"
var comments = Regex.Split(sqlComments, RegexDateIdentifier);
return comments.Where(c => c != string.Empty).ToList();

但是上面的代码,按照我的意愿分割字符串,但删除了日期。所以我喜欢;

  1. 16:09:03 by Joe Bloggs)已添加
  2. 17:03:04 by Joe Bloggs)更新了
  3. 有人可以建议如何执行上述操作,但保留日期(分隔符)?

1 个答案:

答案 0 :(得分:1)

这应该是你应该做的,它使用Zero-Width Positive Lookahead Assertion\s+来删除空格:

    static void Main(string[] args)
    {
        string RegexDateIdentifier = @"\s+(?=\d{1,2}\/\d{1,2}\/\d{4})";
        var sqlComments = "07/04/2017 16:09:03 by Joe Bloggs) Added 07/04/2017 17:03:04 by Joe Bloggs) Updated";
        var comments = Regex.Split(sqlComments, RegexDateIdentifier);
        var list = comments.ToList();

        foreach (var s in list)
        {
            Console.WriteLine("|{0}|", s);
        }
    }