2016-03-22 34 views
3

time, type ve message'u almak için bir günlük dosyası ayrıştırmak istiyorum. Bir günlük dosyası böyle inşa edilmiştir:Çoklu dize eşleşmesi için regex

[08:52:18] [ERROR] Ceci doit aparaitre 
[08:52:18] [WARN] Bonjour 

Şu anda böyle yapıyorum: my kod üzerinde RegexStorm ancak böyle sitesinde iyi çalışıyor

var result = Regex.Match(fileLogs, @"/\[(.+)\] \[(.+)\] (.+)/g"); 

. Nedenini anlamıyorum. İlk / ve son /g Kaldır

+0

'ama benim code' üzerinde => daha bilgi –

+1

' fileLogs' nedir gereken yere yani? Çizgiler dizisi, tek bir çizgi ya da ne? –

+0

fileLogs sadece yukarıdaki örnek metni içeren bir dizedir. Sonuç tüm hattır. – Sakuto

cevap

4

:

I (time, type ve message sadece 3 özelliklerine sahip) Log yeni bir örneğini oluşturmak için bu eleman almak istiyor. Javascript değil, C# programlıyorsunuz. şimdi çalışıyor

var result = Regex.Match(fileLogs, @"\[(.+)\] \[(.+)\] (.+)"); 

Ideone gösteren: https://ideone.com/QkTYwS

doğru bölmek için gibi bir şey kullanabilirsiniz:

var result = Regex.Matches(fileLogs, @"\[(.+)\] \[(.+)\] (.+)"); 

foreach (Match match in result) 
{ 
    string time = match.Groups[1].Value; 
    string type = match.Groups[2].Value; 
    string messsage = match.Groups[3].Value; 
    Console.WriteLine("{0} | {1} | {2}", time, type, messsage); 
} 

Not Regex.Matches kullanımı.

Ideone: https://ideone.com/lUxnSs

+0

Ayrıca denedi, ancak sonuç.Value bütün çizgi. – Sakuto

+0

@Sakuto * RegexStorm gibi web sitesinde çalışıyor ama benim kodumda değil * O zaman RegexStorm :-) ile iyi çalışmıyor :-) – xanatos

+0

Teşekkürler, yazarken bunu anladım, teşekkürler (: The /,/g test amaçlıydı, ilk kodumda değildi ama Gruplar özniteliğiyle ilgili sorun yaşadım. – Sakuto

İlgili konular