2016-04-08 22 views
0

Normal ifade: editClassification/(?P<pk>[\d+])Bu python regexp'de neden d + bir rakamı eşleştiriyorsunuz?

dize eşleştirmek için: foo/editClassification/10

pythex example

+0

kaldırmak karakter sınıfı ve kullanım '(\ d +)' yerine – rock321987

+0

Bu genellikle geldiği zaman '[\ d] 'ya da' [\ s] 'gibi insanlar aşırı karakter sınıfları. Genişlemeye çalıştıklarında, sıkışıklaşıyorlar ve bu soruları sıkça ortaya çıkıyorlar. –

cevap

2

\d+ bir karakter sınıfının ([...]) içinde olduğu için; [\d+], bir rakam ya da + olan bir karakterle eşleşir.

Bunun yerine (?P<pk>\d+) yazmanız gerekiyordu. Sizin \d+

1

bir karakter sınıfı (Regexp Tutorial veya PHP Docs bulunabilir fazla bilgi) içindeydi. Bu, içindeki herhangi bir harfin seçildiği anlamına gelir. Örneğin, (a|b|c), [abc] karakter sınıfına eşdeğerdir. Yani karakter sınıfınız bir rakam ya da + ile eşleşiyordu.

köşeli parantez ]'u \d+ sayfasından çıkarmalısınız. Yeni RegEx:

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

Alternatif olarak, sadece karakter sınıfının dışında + hareket olabilir, ama bu sadece alanı atıklar.

Live Demo on Pythex