say 'match' if 'abABCDCBAdeXYZYXfg' =~ / (?>^.*?) ( ( (.)(?-3)\g-1 | (.).\g-1 ) (?{ say $2 }) ) /x; #### YZY XYZYX CDC BCDCB ABCDCBA