use Regexp::Common; $_ = q{ public void readExternal() { this { is } not { { real } java } code but an { { { example } } } } }; my ($function) = /( public \s+ void \s+ readExternal [^{]+ $RE{balanced}{-parens=>'{}'} )/x;