2016-04-08 9 views
0

正規表現:editClassification/(?P<pk>[\d+])このpython正規表現で d +が1桁に一致するのはなぜですか?

文字列が一致する:foo/editClassification/10

pythex example

+0

削除文字クラスと使用 '(\ D +)'代わり – rock321987

+0

これは通常、 '[\ D]'や '[\ s]は'のようなとき、人々酷使文字クラスをアップします。拡張しようとすると、彼らは困惑し、これらの質問を頻繁にここにポップアップして尋ねます。 –

答えて

2

\d+は文字クラス([...])内にあるからです。 [\d+]は、数字または+のいずれかの文字と正確に一致します。

あなたは代わりに(?P<pk>\d+)と書きます。あなたの\d+

1

文字クラスRegexp TutorialまたはPHP Docsで見つけることができる詳細情報)の中にありました。つまり、内部の任意の文字が選択されます。たとえば、(a|b|c)は、文字クラス[abc]に相当します。あなたのキャラクタークラスはいずれかの数字、または+と一致しています。

角括弧]\d+のまわりで削除する必要があります。あなたの新しい正規表現:

editClassification/(?P<pk>\d+) 

代わりに、あなただけの文字クラスの外+を動かすことができ、それはただのスペースを無駄にします。

Live Demo on Pythex

関連する問題