2012-07-08 42 views
8

Tôi muốn có một url chấp nhận tất cả các ký tự, ví dụ:có một url chấp nhận tất cả các ký tự

(r'^company/(?P<key>[a-zA-Z]+)/doclist/$','CompanyHub.views.docList') 

cho key tham số thay vì chỉ ascii ký tự chữ Nó chấp nhận tất cả các ký tự bao gồm số, ký hiệu như $, - , _, ..., bảng chữ cái, ký tự unicode, ...

Tôi làm cách nào để thực hiện việc này?

Trả lời

25

Mã của bạn sẽ trông như thế này:

(ur'^company/(?P<key>.*)/doclist/$','CompanyHub.views.docList') 

Chúng ta cần 'u' lúc đầu nói với trăn rằng chuỗi chấp nhận các ký tự unicode.

7

RegEx sẽ trông như thế này:

(.*) 

Điều đó sẽ phù hợp với tất cả các nhân vật ngoại trừ ký tự dòng mới.

0

Như những người khác đã nói:

(.*) 

... sẽ phù hợp với tất cả các nhân vật, nhưng nó cũng sẽ phù hợp với một chuỗi rỗng (mà có thể là xấu nếu regex là ở phần cuối của URL). Nếu bạn muốn để buộc rằng ít nhất một nhân vật là cần thiết, sau đó sử dụng này:

(.+) 

Chỉ cần được rõ ràng, những công việc ở giữa URL cũng như ở cuối, vì vậy một cái gì đó như thế này làm việc hoàn toàn tốt đẹp :

url(ur'^package\/(?P<pkgname>.+)\/(?P<pkgversion>.+)', ...) 

(và như @tsikov nói, sử dụng một trước 'u' cho unicode)

Các vấn đề liên quan