using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"interface\s([\S]+?)\.(\d+)\s+(description\s(?:[^a-zA-Z0-9]?([\S]+)[^a-zA-Z0-9]?))*(?:encapsulation\sdot1q\s(\d+)\s*)*(?:second-dot1q\s(\S+)\s+)*(?:rewrite\singress\stag\s(.+?)\s{2,})*(?:service-policy\sinput\s([\S]+)\s+)*(?:service-policy\soutput\s([\S]+))*.+?(?:\s*!|\s+service\sinstance)";
string input = @"interface Loopback9 description RIFERIMENTO LDP/EoMPLS ip address 172.16.116.23 255.255.255.255!
interface Port-channel2 description KdC-TEST_ESPOSITO/CANDIDO_3263 mtu 9206 no ip address logging event link-status load-interval 30 shutdown
service instance 301 ethernet description LINK-to-OLO encapsulation dot1q 269 second-dot1q 301 rewrite ingress tag pop 1 symmetric group 12333 service-policy input BTS_P01_B-96k_B3-0_B5-0_B6-0_IN service-policy output BTS_P01_B-96k_B3-0_B5-0_B6-0_OUT xconnect 172.16.116.249 570435069 encapsulation mpls mtu 9206
service instance 301 ethernet description LINK-to-OLO encapsulation dot1q 269 second-dot1q 301 rewrite ingress tag pop 1 symmetric group 12333 service-policy input BTS_P01_B-96k_B3-0_B5-0_B6-0_IN service-policy output BTS_P01_B-96k_B3-0_B5-0_B6-0_OUT xconnect 172.16.116.249 570435069 encapsulation mpls mtu 9206 !
service instance 4001 ethernet description SI_VLAN-PING encapsulation dot1q 4001 rewrite ingress tag pop 1 symmetric service-policy input PING_LIMIT bridge-domain 4001 !!
interface Port-channel2.302 description ""vlan_pseudo_lato_olo"" encapsulation dot1q 1327 second-dot1q 1001 rewrite ingress tag pop 1 symmetric service-policy input GBE_remark_in service-policy output GBE_remark_out !
interface Port-channel2.302 description test_subif!";
foreach (Match m in Regex.Matches(input, pattern))
{
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