Is it better to use path() or url() in urls.py for django 2.0?

In a django online course, the instructor has us use the url() function to call views and utilize regular expressions in the urlpatterns list. I've seen other examples on youtube of this. e.g.

    from django.contrib import admin
    from django.urls import include
    from django.conf.urls import url

    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'^polls/', include('polls.urls')),
    ]


    #and in polls/urls.py

    urlpatterns = [        
        url(r'^$', views.index, name="index"),
    ]

However, in going through the Django tutorial, they use path() instead e.g.:

    from django.urls import path
    from . import views

    urlpatterns = [
        path('', views.index, name="index"),        
    ]

Furthermore regular expressions don't seem to work with the path() function as using a path(r'^$', views.index, name="index") won't find the mysite.com/polls/ view.

Is using path() without regex matching the proper way going forward? Is url() more powerful but more complicated so they're using path() to start us out with? Or is it a case of different tools for different jobs?

From Django documentation for url

url(regex, view, kwargs=None, name=None) This function is an alias to django.urls.re_path(). It’s likely to be deprecated in a future release.

Key difference between path and re_path is that path uses route without regex

You can use re_path for complex regex calls and use just path for simpler lookups

From: stackoverflow.com/q/47947673