          else:
              return []
  
      def resolve(self, path):
          match = self.regex.search(path)
          if match:
              # If there are any named groups, use those as kwargs, ignoring
              # non-named groups. Otherwise, pass all non-named arguments as
              # positional arguments.
              kwargs = match.groupdict()
 
</s> remove             # If there are any named groups, use those as kwargs, ignoring
            # non-named groups. Otherwise, pass all non-named arguments as
            # positional arguments.
            kwargs = match.groupdict()
            args = () if kwargs else match.groups()
            # In both cases, pass any extra_kwargs as **kwargs.
 </s> add             new_path, args, kwargs = match
            # Pass any extra_kwargs as **kwargs. </s> remove         url(r'^publishers/$', PublisherList.as_view()),
 </s> add         path('publishers/', PublisherList.as_view()), </s> remove     from django.conf.urls import url
 </s> add     from django.urls import path </s> remove            url(r'^static/(?P<path>.*)$', views.serve),
 </s> add            re_path(r'^static/(?P<path>.*)$', views.serve),
        match = self.pattern.match(path)
          else:
              return []
  
      def resolve(self, path):
        match = self.pattern.match(path)
          if match:
              # If there are any named groups, use those as kwargs, ignoring
              # non-named groups. Otherwise, pass all non-named arguments as
              # positional arguments.
              kwargs = match.groupdict()
keep keep keep keep replace keep keep keep keep keep
 Fixed #28593 -- Added a simplified URL routing syntax per DEP 0201.

Thanks Aymeric Augustin for shepherding the DEP and patch review.
Thanks Marten Kenbeek and Tim Graham for contributing to the code.
Thanks Tom Christie, Shai Berger, and Tim Graham for the docs. 
django/urls/resolvers.py