Regex messageServerRegex =
new Regex(@"([0-9\-]{10})\ ([0-9:]{8})\ \[TEXT\]\ (\[Server\])\ ([^\[]*)");
if (messageServerRegex.IsMatch(rchConsoleText))
{
var infoMatches = messageServerRegex.Split(rchConsoleText);
Console.WriteLine("Date: {0}\nTime: {1}\nType: {2}\nMessage: {3}",
infoMatches[1], infoMatches[2], infoMatches[3], infoMatches[4]);
}
サーバーでフィルタリングするテキストの2つの例を次に示します。
2012-12-2402:24:18[テキスト][サーバー]2012-12-2402:24:18[テキスト][サーバー]サンプルテキスト。
この行から戻したい結果は次のとおりです。
日付:2012-12-14 時間:02:24:18 タイプ:[テキスト][サーバー] メッセージ:2012-12-2402:24:18[テキスト][サーバー]サンプルテキスト。
しかし、それは次のように応答します:
日付:2012-12-14 時間:02:24:18 タイプ:[テキスト][サーバー] メッセージ:2012-12-24 02:24:18
ご覧のとおり、日付と時刻のみが表示されます。これは、正規表現がフィルターを適用しているためです。日付と時刻を1回だけカットするようにするにはどうすればよいですか。
2番目の例は正常に機能します。これは次のとおりです。
2012-12-24 02:24:18[TEXT][Server]サンプルテキストサンプルテキストサンプルテキスト。
この行から戻したい結果は次のとおりです。
日付:2012-12-14 時間:02:24:18 タイプ:[テキスト][サーバー] メッセージ:サンプルテキストサンプルテキストサンプルテキスト。