2013-08-19 26 views
11

MySQL tablomdan bazı sonuçları seçmek için normal bir ifade kullanarak sorun yaşıyorum.# 1139 - Regexp hatası 'yineleme işleci işleneni geçersiz' hatası var

ben bu sorguyu

SELECT text 
FROM `articles` 
WHERE content REGEXP '.*<img.*?src=\"http://www' 
ORDER BY date DESC 

kullanıyorum Ve ben ++ Notepad ile regex test

#1139 - Got error 'repetition-operator operand invalid' from regexp 

diyor ve neden MySQL bana bu hatayı veriyor ve bunu nasıl düzeltebilirim, işleri ?

+0

Bu, herhangi bir orta boy tablolarla iyi çalışmaz. – NullUserException

+0

@NullUserException Bu seçimi bir kereden fazla kullanmam, tabloya hangi kayıtların göreli URL'ler yerine görüntü için mutlak URL'leri olduğunu ve bunları düzeltmek için bir kez buna ihtiyacım var, o zaman artık ihtiyacım yok – BackSlash

+0

'LIKE '% ErickBest

cevap

29

göre MySQL manual

MySQL POSIX ile uyum hedefleniyor düzenli ifadeler Henry Spencer'ın uygulanmasını kullanır 1003,2

POSIX regexes olmayan bir şekilde soru işareti ? kullanarak desteklemez -Öğrenci (tembel) modifiye edicidir ve artı PCRE (Perl Uyumlu Düzenli İfadeler) gibi niceleyiciler. Bu, +? ve *?

'u kullanamayacağınız anlamına gelir. Bu, işe yaraması gereken açgözlü sürümü kullanmanız gerektiği anlamına gelir.

'<img[^>]*src="http://www'

Not: " kaçtı zorunda değildir ve başında .* ima <img style="/*some style*/" src="a.png"> <script src="www.example.com/js/abc.js"> gibi şeylerin eşleşmesini önlemek için, bir negatif karakter sınıfını kullanabilirsiniz.

+0

That doesn't work. if i have '

-1

Deneyebilirsin

SELECT 
     text 
     , 
    IF (content LIKE '%<img src="http://%', text , content LIKE '%<img style=%') 
as imageText 

FROM articles ORDER BY date DESC 

bu ilk o zaman bulamazsa içerik <img src="http:// nerede yerine <img style= arayacaktır kontrol edecektir.

Yardım edin.

Kontrol Fiddle: http://sqlfiddle.com/#!2/6a2f0/13/0

+0

Neden _DownVote _? ... _DownVote_ gerçekse bir yorum bırakın ... Barış! – ErickBest

İlgili konular