    # File lib/locale/tag/cldr.rb, line 31
            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