2017-03-17 18 views
0

正規表現を使ってlog4netテキストファイルから複雑な文章のデータを抜き出したいと思っています。私はインターネットを検索するが、私はこれより複雑な場合にはそれを行う方法を見つけることができません正規表現を使用して複雑な文章から特定のデータを抽出する方法は?

Method = GetData() 
Time = 09:47:03 
Start = 15-3-2017 09:47:01 
ElapsedSeconds = 1,9023 
Task = 7514 
Thread = 9 

4012 09:47:03 INFO QueueController - method GetData(), Start = 15-3-2017 09:47:01, ElapsedSeconds = 1,9023, Task = 7514, Thread = 9 

は、私は、次のデータが必要です。誰かが解決策を知っていますか?

どうもありがとう、 ジョディ

+0

あなたは基本的な正規表現のチュートリアルをやって自分を試してみましたか? –

+0

はまっすぐに見える –

+0

@ジョーディーチェックの答えがこの作品の場合 –

答えて

1

string text = "4012 09:47:03 INFO QueueController - method GetData(), Start = 15-3-2017 09:47:01, ElapsedSeconds = 1,9023, Task = 7514, Thread = 9"; 
Regex pattern = new Regex(@"(.*\s+)(?<Time>.*)(\s+INFO QueueController*)(.*method\s+)(?<Method>.*)(, Start\s+)(?<Start>.*)(, ElapsedSeconds =*)(.*\s+)(?<ElapsedSeconds>.*)(, Task =*)(.*\s+)(?<Task>.*)(, Thread =)(.*\s+)(?<Thread>.*)(.*)"); 
Match match = pattern.Match(text); 

string method = match.Groups["Method"].Value; 
string time = match.Groups["Time"].Value; 
string start = match.Groups["Start"].Value.Replace("=",""); 
string elapsed = match.Groups["ElapsedSeconds"].Value; 
string task = match.Groups["Task"].Value; 
string thread = match.Groups["Thread"].Value; 

Console.WriteLine("Method = " + method); 
Console.WriteLine("Time = " + time); 
Console.WriteLine("Start = " + start); 
Console.WriteLine("Elapsed = " + elapsed); 
Console.WriteLine("Task = " + task); 
Console.WriteLine("Thread = " + thread); 
Console.ReadKey(); 

...このコードを試してみてくださいこれは、このようなあなたの出力が得られます。

enter image description here

+0

うわー、あなたの説明に感謝します:-) – Jordy

関連する問題