2016-03-22 16 views
3

ログファイルを解析してtime,typemessageを取得します。ログファイルは次のように構築されています正規表現で複数の文字列を一致させる

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

私は現在、このようにそれをやっている:私のコードでRegexStormではなく、のようなウェブサイト上で正常に動作している

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

。なぜ私は本当に理解していない。初期/と最終/gを削除

+0

'ではなく、私のcode' =>上の我々はより多くの情報 –

+1

' fileLogs'は何が必要な場所というのですか?行の配列、一行または何? –

+0

fileLogsは、上の例のテキストを含む単なる文字列です。結果は行全体です。 – Sakuto

答えて

4

は、私が(timetypemessageわずか3属性を持つ)Logの新しいインスタンスを作成するために、これらの要素を取得します。あなたはJavascriptではなくC#でプログラミングしています。

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

Ideone今それが動作することを示す:https://ideone.com/QkTYwS

を正しくあなたのようなものを使用することができ、それを分割するには:

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

Regex.Matchesの使用を。

Ideone:https://ideone.com/lUxnSs

+0

試しましたが、result.Valueは全体の行。 – Sakuto

+0

@Sakuto * RegexStormのようなウェブサイトでうまくいきますが、自分のコードではうまくいきません。* RegexStormでうまく動作しません。 – xanatos

+0

ありがとうございました。私の初期のコードではありませんでしたが、私はGroups属性を扱う際に問題がありました。 – Sakuto

関連する問題