2016-12-26 9 views
1

URL正規表現で電子メールアドレスと末尾にスラッシュを一致させることができません。期待、これはことを考えると、私は/?を追加することは働くだろうと思っているだろう/customer/[email protected]と一致し、ない/customer/[email protected]/url正規表現の電子メールアドレスの後ろにスラッシュを付けることができません

として

r'^customer/(?P<customer_email>[\w.%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,63}$)$' 

:ここには最後のスラッシュとメールアドレスと一致する正規表現です電子メールアドレスのドメインサフィックスに一致する正規表現は、スラッシュに貪欲に一致してはなりません。 (これは、他の重複した正規表現の末尾のスラッシュの質問の多くに対する解決策でした)。予想通り

r'^customer/(?P<customer_email>[\w.%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,63}$)/?$' 

、これは/customer/[email protected]と一致しますが、予想外にそれは/customer/[email protected]/と一致していません。 なぜですか?

APPEND_SLASHsettings.pyが設定されていません。 customer_email urlパラメータの一部としてスラッシュをキャプチャしたくありません。

+1

'$'では、文字列の末尾が必要です。最初の '$'を削除してください。 https://regex101.com/r/wQ3x4N/1 –

+0

をご覧ください。ありがとうございました。私は、それがURLパラメータキャプチャグループの終わりにも必要であるという誤った印象を持っていました。それを回答として投稿すれば、私はそれを受け入れるでしょう。 – Escher

答えて

2

$アンカーは、文字列の終わりを意味し、あなたがかかりパターンの内側にそれを持って初めて、それが文字列の最後が必要です。

したがって、あなたはパターンの最初の$を削除し、

^customer/(?P<customer_email>[\w.%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,63})/?$ 

を使用する必要がregex demoを参照してください。

関連する問題