private function compileUriRegEx()
    {
        $reg_start      = '/^';
        $scheme_part    = '(?:(?\'scheme\'[A-Za-z0-9][^\/\?#:]+):)?';
        $authority_part = '(?:(?:\/\/)(?\'authority\'[^\/]*))?';
        $path_part      = '(?\'path\'[^\?#]*)?';
        $query_part     = '(?:\?(?\'query\'[^#]*))?';
        $fragment_part  = '(?:#(?\'fragment\'.*))?';
        $reg_end        = '/';

        return $reg_start . $scheme_part . $authority_part . $path_part . $query_part . $fragment_part . $reg_end;
    }