2017-04-18 2 views
1

私はそのような文字列を持っています:"07/04/2017 16:09:03 by Joe Bloggs)07/04/2017 17:03:04 by Joe Bloggs)更新"デリミネーターを保持しながら正規表現を分割しながらC#

文字列をコメントのリストに分割したいと思います。上記の文字列の例には、2つの別々のコメントがリストに分割されています。私はそれぞれの新しいコメントが日付で始まることを確認しました。だから、各日付のために、idは文字列を分割するのが好きです。

Iは、次の正規表現パターン日付を検出 '\ 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(); 

上記のコードは、私が望むように文字列を分割しますが、日付を削除します。だから私は好きになってしまった。ジョーBloggs)によって

  1. 午後04時09分03秒は、誰もが(上記を実行する方法を助言するが、日付を維持しながらすることができ

を更新ジョーBloggs)によって

  • 午後05時03分04秒を追加しましたデリミネーター)?

  • +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

    関連する問題