# File lib/locale/tag/cldr.rb, line 30
        def parse(tag)
          if tag =~ /\APOSIX\Z/  # This is the special case of POSIX locale but match this regexp.
            nil
          elsif tag =~ TAG_RE
            lang, script, region, subtag = $1, $2, $3, $4
            
            extensions = {}
            subtag.scan(/#{EXTENSION}/i).each{|v| 
              subtag.sub!(v, "")
              key, type = v.split("=")
              extensions[key] = type
            }
            variants = subtag.scan(/#{VARIANT}/i).collect{|v| v[0].upcase}
            
            ret = self.new(lang, script, region, variants, extensions)
            ret.tag = tag
            ret
          else
            nil
          end
        end