Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan REGEXP MySQL Saya Gagal dengan \'pengendali pengulangan tidak sah\'?

Mengapa Pertanyaan REGEXP MySQL Saya Gagal dengan \'pengendali pengulangan tidak sah\'?

Barbara Streisand
Barbara Streisandasal
2024-11-26 15:54:11665semak imbas

Why Does My MySQL REGEXP Query Fail with

Ungkapan Biasa Gagal: '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.

Memahami Isu: POSIX lwn. PCRE

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.

Penyelesaian: Menggunakan Pengkuantiti Tamak

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn