--- puppet-2.6.7.orig/lib/puppet/resource/type_collection.rb
+++ puppet-2.6.7/lib/puppet/resource/type_collection.rb
@@ -73,7 +73,10 @@ class Puppet::Resource::TypeCollection
 
     @node_list.each do |node|
       next unless node.name_is_regex?
-      return node if node.match(name)
+      if node.match(name)
+          node.matched_node = name
+          return node
+      end
     end
     nil
   end
--- puppet-2.6.7.orig/lib/puppet/resource/type.rb
+++ puppet-2.6.7/lib/puppet/resource/type.rb
@@ -13,7 +13,7 @@ class Puppet::Resource::Type
 
   RESOURCE_SUPERTYPES = [:hostclass, :node, :definition]
 
-  attr_accessor :file, :line, :doc, :code, :ruby_code, :parent, :resource_type_collection, :module_name
+  attr_accessor :file, :line, :doc, :code, :ruby_code, :parent, :resource_type_collection, :module_name, :matched_node
   attr_reader :type, :namespace, :arguments, :behaves_like
 
   RESOURCE_SUPERTYPES.each do |t|
@@ -181,6 +181,7 @@ class Puppet::Resource::Type
 
   def name
     return @name unless @name.is_a?(Regexp)
+    return @matched_node if @matched_node
     @name.source.downcase.gsub(/[^-\w:.]/,'').sub(/^\.+/,'')
   end
 
