using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^(?P<timestamp>.{19})\ \[(?P<severity>\w{4,6})\]
\ \d+\#\d+:\ (\*\d+\ )?
(?P<err_msg>
(?:\""\S+\""\sis\snot\s)?
(?P<err_type>\w+)[\s(]
(?:requests,\ excess:\ (?P<err_rate>\d+\.\d+)
\ by\ zone\ \""(?P<err_zone>\S+)\""
|.+?)
)
(?:
,\ client:\ (?P<remote_addr>\d+\.\d+\.\d+\.\d+)
,\ server:\ (?P<server>[^,\a]+)
(?:,\ request:\ \""(?P<method>[A-Z]{3,4}?)
\ (?P<uri>\/\S*?)(?P<uri_query>\?\S+)?
\ (?P<protocol>\S+)\""
)?
(?:,\ upstream:\ \""(?P<upstream>.+?)\"")?
(?:,\ host:\ \""(?P<req_host>\S+)\"")?
(?:,\ referrer:\ \""(?P<referrer>\S+)\"")?
|)
$";
string input = @"2023/06/16 17:12:30 [error] 1814859#1814859: *228570402 limiting requests, excess: 50.120 by zone ""resizerzone"", client: 10.5.0.122, server: app.market.com, request: ""GET /resizer/view?key=8e158c8741ce849a09ef84d316bb68e7&b=productimages&f=webp&s=0 HTTP/1.1"", host: ""market.com"", referrer: ""https://market.com/""
";
RegexOptions options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline;
Match m = Regex.Match(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