2016-03-14 66 views
1

一個複雜的語法,如:Django,MySQL和正則表達式:不支持重新語法?

Model.objects.filter(url__iregex=r'^\S+\/\d+\/\S+$') 

不起作用。但是,一些地方我離開應該逃脫部分字符串,轉義確實回報元素:

Model.objects.filter(url__iregex=r'^http://www.c') 

什麼我做錯了,或者是正則表達式不是在Django與MySQL支持?

+0

如果'^ \ S + \/\ d + \/\ s + $'與MySQL的REGEXP操作處理,它不會工作。你需要像'^ [^ [:space:]] +/[0-9] +/[^ [:space:]] + $'' –

+0

是的,這是完全正確的。 – dengar81

回答

2

您需要使用MySQL的REGEXP語法表達:

^[^[:space:]]+/[0-9]+/[^[:space:]]+$ 

其中

  • ^ - 字符串的開始
  • [^[:space:]]+ - 1個或多個字符以外的空白
  • / - a /符號
  • [0-9]+ - 1或多個數字
  • / - 串的端 - 一個/
  • [^[:space:]]+ - 除空白
  • $其它1個或多個字符。

More details on REGEXP syntax