web-dev-qa-db-ja.com

URLの「^ $」と「」の違いdjango

Djangoの以下の2つのURLパターンの違いは何ですか?

url(r'^$', views.indexView, name='index'),

url(r'', include('registration.urls'))

私の理解では、「^ $」と「」はどちらも空の文字列を指します。 '^ $'と ''は実際に何を指定しますか?

14
99darshan

正規表現では、^$は特殊文字です。

^(キャレット):

^は文字列の先頭に一致します。

私の正規表現が^aだったとすると、正規表現は文字列の先頭でaを探します。

'a'    # Matches 'a' in 'a'  
'abc'  # Matches 'a' in 'abc'
'def'  # Not match because 'a' was not at the beginning 

$(ドル記号):

$は文字列の終わりに一致します。

私の正規表現がb$の場合、文字列の最後のbと一致します。

'b'     # Matches 'b' in 'b'
'ab'    # Matches 'b' in 'ab'
'abc'   # Does not match 

r'^$'を使用

^$の両方を^$として一緒に使用すると、空の行/文字列に一致します。

url(r'^$', views.indexView, name='index')

Djangoが空の文字列を検出すると、indexページに移動します。

r''を使用

r''を使用すると、DjangoはURL内の任意の場所で空の文字列を検索します。これは、すべてのURLに当てはまります。

したがって、urlpatternが次のような場合:

url(r'', views.indexView, name='index')

すべてのURLはindexページに移動します。

28
Rahul Gupta

^$は、開始と終了の間に何もないことを意味します... this only空の文字列に一致します

''は空の文字列を意味します(ただし、文字列全体の最初または最後については何も指定しません)。したがって、文字列内で何かに遭遇すると、'asdasd'に一致するものがよく表示されます。最初に...残りは新しいURLルールスクリプトに渡されます(この場合はすべて残ります)

代わりに、2番目のルールが'a'の場合、それはasdasdの最初のaと一致し、sdasdを新しいURL一致ルールセットに渡します。

これはおそらく大幅に単純化しすぎているという免責事項ですが、基本的には正しいです

5
Joran Beasley

^ $-URL文字列の開始点と終了点を指定します。

'' -URLメソッドの空の文字列は、URLパターンで定義されていない他のURLパターンが検出された場合、対応する空の文字列ビューを呼び出す必要があることを示しています

1
Manikandan

^ $は、これら2つの特殊文字の間で文字列が一致していることを意味します

0
Komo