nodes: 0, module; 1, function_definition; 2, function_name:sort_vid_split; 3, parameters; 4, block; 5, identifier:vs; 6, expression_statement; 7, expression_statement; 8, if_statement; 9, comment:"""
      Split a valid variable string into its variable sort and id.
  
      Examples:
          >>> sort_vid_split('h3')
          ('h', '3')
          >>> sort_vid_split('ref-ind12')
          ('ref-ind', '12')
      """; 10, assignment; 11, comparison_operator:match is None; 12, block; 13, else_clause; 14, identifier:match; 15, call; 16, identifier:match; 17, None; 18, raise_statement; 19, block; 20, attribute; 21, argument_list; 22, call; 23, return_statement; 24, identifier:var_re; 25, identifier:match; 26, identifier:vs; 27, identifier:ValueError; 28, argument_list; 29, call; 30, call; 31, attribute; 32, argument_list; 33, attribute; 34, argument_list; 35, identifier:match; 36, identifier:groups; 37, string; 38, identifier:format; 39, call; 40, string_content:Invalid variable string: {}; 41, identifier:str; 42, argument_list; 43, identifier:vs
code: def sort_vid_split(vs):
      """
      Split a valid variable string into its variable sort and id.
  
      Examples:
          >>> sort_vid_split('h3')
          ('h', '3')
          >>> sort_vid_split('ref-ind12')
          ('ref-ind', '12')
      """
      match = var_re.match(vs)
      if match is None:
          raise ValueError('Invalid variable string: {}'.format(str(vs)))
      else:
          return match.groups()