2017-04-18 38 views
1

我有這樣一個字符串:「07/04/2017 16:09:03由Joe Bloggs)添加07/04/2017 17:03:04由Joe Bloggs)更新「正則表達式分割,同時保持deliminator c#

我想將字符串拆分爲註釋列表。上面的字符串示例包含兩個單獨的註釋,我想分成一個列表。我發現每個新評論都以日期開始。所以對於每個日期,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秒由李四)新增
  2. 17時03分04秒由李四)更新

誰能告訴我如何執行上述但保持日期( deliminator)?

+0

有上向前斷言信息圍繞搜索 - 他們會幫助你的「空間拆分,再接通過一個日期「,看起來像你想要的。還有一點值得一提的是你的日期格式不會改變(例如按照ISO 8601格式)。 –

回答

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); 
     } 
    } 
+0

完成了這項工作! – HelloAmigo