Index: core/urlresolvers.py
===================================================================
--- core/urlresolvers.py	(revision 5776)
+++ core/urlresolvers.py	(working copy)
@@ -198,6 +198,16 @@
     def reverse_helper(self, *args, **kwargs):
         return reverse_helper(self.regex, *args, **kwargs)
 
+    def args_schema(self):
+        named_args = []
+        positional_args = 0
+        for m in re.findall(r'\((?:\?P<(\w+)>)?[^)]+\)', self.regex.pattern, re.UNICODE):
+            if m:
+                named_args.append(m)
+            else:
+                positional_args += 1
+        return tuple([positional_args] + sorted(named_args))
+
 class RegexURLResolver(object):
     def __init__(self, regex, urlconf_name, default_kwargs=None):
         # regex is a string representing a regular expression.
@@ -218,8 +228,9 @@
                     for key, value in pattern.reverse_dict.iteritems():
                         self._reverse_dict[key] = (pattern,) + value
                 else:
-                    self._reverse_dict[pattern.callback] = (pattern,)
-                    self._reverse_dict[pattern.name] = (pattern,)
+                    args_schema = pattern.args_schema()
+                    self._reverse_dict[pattern.callback, args_schema] = (pattern,)
+                    self._reverse_dict[pattern.name, args_schema] = (pattern,)
         return self._reverse_dict
     reverse_dict = property(_get_reverse_dict)
 
@@ -278,8 +289,9 @@
             lookup_view = get_callable(lookup_view, True)
         except (ImportError, AttributeError):
             raise NoReverseMatch
-        if lookup_view in self.reverse_dict:
-            return u''.join([reverse_helper(part.regex, *args, **kwargs) for part in self.reverse_dict[lookup_view]])
+        args_schema = tuple([len(args)] + sorted(kwargs.keys()))    
+        if (lookup_view,args_schema) in self.reverse_dict:
+			return u''.join([reverse_helper(part.regex, *args, **kwargs) for part in self.reverse_dict[lookup_view,args_schema]])
         raise NoReverseMatch
 
     def reverse_helper(self, lookup_view, *args, **kwargs):
