using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^(?<host>\S+)\s-\s(?<user>\S+)\s\[(?<time>[^\]]*)\](?:\s(?<method>\w+))?(?:\s(?<url>\/\S+))?\s(?<http_version>\S+)\s""(?<status>\d+)""\s(?<bytes>\d+)(?:\s""(?<rfc>[^\""]*)"")?(?:\s""(?<agent>[^\""]*)"")?\s""(?<x_forward>[^\""]*)""\s(?<time_spent>[\d.]+).*$";
string input = @"172.31.33.157 - - [08/May/2017:16:30:20 +0800] - ""400"" 0 ""-"" ""-"" ""-"" 0.000
172.31.44.196 - - [08/May/2017:18:47:31 +0800] GET /click?mb_pl=ios&version=1.1 HTTP/1.1 ""302"" 5 ""-"" ""Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E304"" ""100.38.38.149, 54.224.136.60"" 0.004
172.31.44.196 - - [08/May/2017:18:47:31 +0800] GET /click?mb_pl=ios&version=1.1 HTTP/1.1 ""302"" 5 ""-"" "" ""100.38.38.149, 54.224.136.60"" 0.004
172.31.44.196 - - [08/May/2017:18:47:31 +0800] GET /click?mb_pl=ios&version=1.1 HTTP/1.1 ""302"" 5 "" ""Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E304"" ""100.38.38.149, 54.224.136.60"" 0.004";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx