Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan REGEXP MySQL Saya Gagal dengan \'pengendali pengulangan tidak sah\'?
Apabila cuba melaksanakan pertanyaan MySQL berikut:
SELECT text FROM `articles` WHERE content REGEXP '.*<img.*?src=\"http://www' ORDER BY date DESC
anda menghadapi ralat: #1139 - Mendapat ralat 'pengendali pengulangan tidak sah' daripada regexp. Walaupun ungkapan biasa berfungsi dengan betul dalam Notepad , MySQL menolaknya.
Enjin ungkapan biasa MySQL mematuhi POSIX 1003.2, yang tidak mempunyai sokongan untuk tanda soal (?) sebagai pengubah suai tidak tamak dalam pengkuantiti ( dan ). Akibatnya, anda tidak boleh menggaji ? dan ? dalam ungkapan biasa anda.
Untuk menyelesaikan isu ini, gunakan versi pengkuantiti yang tamak, yang masih mencukupi untuk tujuan yang anda maksudkan. Namun begitu, untuk mengelakkan pemadanan elemen yang tidak diingini seperti:
<img>
menyertakan kelas aksara yang dinafikan seperti berikut:
'<img[^>]*src="http://www'
Ingat bahawa watak " tidak memerlukan melarikan diri dan .* pada mulanya adalah tersirat.
Atas ialah kandungan terperinci Mengapa Pertanyaan REGEXP MySQL Saya Gagal dengan \'pengendali pengulangan tidak sah\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!