正規表現:editClassification/(?P<pk>[\d+])
このpython正規表現で d +が1桁に一致するのはなぜですか?
文字列が一致する:foo/editClassification/10
正規表現:editClassification/(?P<pk>[\d+])
このpython正規表現で d +が1桁に一致するのはなぜですか?
文字列が一致する:foo/editClassification/10
\d+
は文字クラス([...]
)内にあるからです。 [\d+]
は、数字または+
のいずれかの文字と正確に一致します。
あなたは代わりに(?P<pk>\d+)
と書きます。あなたの\d+
は文字クラス(Regexp TutorialまたはPHP Docsで見つけることができる詳細情報)の中にありました。つまり、内部の任意の文字が選択されます。たとえば、(a|b|c)
は、文字クラス[abc]
に相当します。あなたのキャラクタークラスはいずれかの数字、または+
と一致しています。
角括弧]
を\d+
のまわりで削除する必要があります。あなたの新しい正規表現:
editClassification/(?P<pk>\d+)
代わりに、あなただけの文字クラスの外+
を動かすことができ、それはただのスペースを無駄にします。
削除文字クラスと使用 '(\ D +)'代わり – rock321987
これは通常、 '[\ D]'や '[\ s]は'のようなとき、人々酷使文字クラスをアップします。拡張しようとすると、彼らは困惑し、これらの質問を頻繁にここにポップアップして尋ねます。 –