using System;
using System.Text .RegularExpressions ;
public class Test
{
public static void Main( )
{
string pattern = @"^((?(D)(?!))(?<C>1)|(?(D)(?!))(?<-C>0)|(?(C)(?!))(?<D>0)|(?(C)(?!))(?<-D>1))*(?(C)(?!))(?(D)(?!))$" ;
string[ ] matchedStrings = new[ ] { "1100" , "1010" , "0101" , "11000011" } ;
string[ ] unmatchedStrings = new[ ] { "110" , "001" , "1100001" } ;
foreach ( var s in matchedStrings)
Console.WriteLine ( "Should matching {0}: {1}" , s, Regex.IsMatch ( s, pattern) ) ;
foreach ( var s in unmatchedStrings)
Console.WriteLine ( "Should not matching {0}: {1}" , s, ! Regex.IsMatch ( s, pattern) ) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgc3RyaW5nIHBhdHRlcm4gPSBAIl4oKD8oRCkoPyEpKSg/PEM+MSl8KD8oRCkoPyEpKSg/PC1DPjApfCg/KEMpKD8hKSkoPzxEPjApfCg/KEMpKD8hKSkoPzwtRD4xKSkqKD8oQykoPyEpKSg/KEQpKD8hKSkkIjsKCiAgICAgICAgc3RyaW5nW10gbWF0Y2hlZFN0cmluZ3MgPSBuZXdbXSB7ICIxMTAwIiwgIjEwMTAiLCAiMDEwMSIsICIxMTAwMDAxMSIgfTsKICAgICAgICBzdHJpbmdbXSB1bm1hdGNoZWRTdHJpbmdzID0gbmV3W10geyAiMTEwIiwgIjAwMSIsICIxMTAwMDAxIiB9OwoKICAgICAgICBmb3JlYWNoICh2YXIgcyBpbiBtYXRjaGVkU3RyaW5ncykgICAgICAgICAgICAKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlNob3VsZCBtYXRjaGluZyB7MH06IHsxfSIsIHMsIFJlZ2V4LklzTWF0Y2gocywgcGF0dGVybikpOwogICAgICAgIGZvcmVhY2ggKHZhciBzIGluIHVubWF0Y2hlZFN0cmluZ3MpCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJTaG91bGQgbm90IG1hdGNoaW5nIHswfTogezF9IiwgcywgIVJlZ2V4LklzTWF0Y2gocywgcGF0dGVybikpOyAgICAgCgl9Cn0=