using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?:(?:^edit\ \""(.+)\""$\n)(?:^set\ uuid\ ([a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12})$\n)(?:(?:^set\ comment\ )((?:(?!^set\ )(?:.*$\n))+)(?=^set\ ))?(?:^set\ service\ (\"".+\"")$\n)?(?:^set\ extip\ ((?:(?:\d{1,3}\.){3}(?:\d{1,3}))(?:\-(?:\d{1,3}\.){3}(?:\d{1,3}))?)$\n)(?:^set\ extintf\ \""(.+)\""$\n)(?:^(set\ portforward)\ (enable)$\n)?(?:^(set\ color)\ (\d{1,2})$\n)?(?:^set\ mappedip\ \""((?:(?:\d{1,3}\.){3}(?:\d{1,3}))(?:\-(?:\d{1,3}\.){3}(?:\d{1,3}))?)\""$\n)(?:^(set\ protocol)\ (.+)$\n)?(?:^(set\ extport)\ (\d{1,5}(?:\-\d{1,5})?)$\n)?(?:^(set\ mappedport)\ (\d{1,5}(?:\-\d{1,5})?)$\n)?(?:^next$\n(?:^$\n)?))";
string input = @"edit ""VIP [DNS сервер site.com]""
set uuid abcdef01-2345-6789-abcd-ef0123456789
set comment ""Публикация IP-адреса для проекта
\""TEST\"" в ДЦ \""Облако\""
set service ""HTTP Webserver""
set extip 100.200.254.20
set extintf ""DMZ [VLAN 100]""
set portforward enable
set color 3
set mappedip ""10.100.200.5""
set protocol udp
set extport 53
set mappedport 2000-65535
next
edit ""VIP [NTP сервер site.com]""
set uuid abcdef01-2345-6789-abcd-ef0123456789
set comment ""Публикация IP-адреса для проекта
\""TEST\"" в ДЦ \""Облако\""
set service ""NTP TCP Server"" ""NTP UDP Server""
set extip 100.200.254.20-100.200.254.21
set extintf ""DMZ [VLAN 100]""
set portforward enable
set color 3
set mappedip ""10.100.200.5-10.100.200.6""
set protocol udp
set extport 123
set mappedport 1000-1999
next
";
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