my $braces = qr/(? { (?: (?: [^{}] | (?&braces) )*+ )* } )/x; #### my $parens = qr/(\((?:[^()]++|(?-1))*+\))/; if (/foo $parens \s+ \+ \s+ bar $parens/x) { # do something here... }