Rumah  >  Artikel  >  pangkalan data  >  Mengapa MySQL REGEXP Membuang \'#1139 Ralat: Operasi Operator Ulangan Tidak Sah\' dan Bagaimana Saya Boleh Membetulkannya?

Mengapa MySQL REGEXP Membuang \'#1139 Ralat: Operasi Operator Ulangan Tidak Sah\' dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-11-23 15:25:13683semak imbas

Why Does MySQL REGEXP Throw

#1139 Ralat: Operasi Operator Ulangan Tidak Sah dalam Ungkapan Biasa

Apabila menanyakan jadual MySQL dengan ungkapan biasa (regex) untuk memilih tertentu hasil, pengguna kadangkala menghadapi ralat "#1139 - Mendapat ralat 'pengendali pengulangan invalid' from regexp." Ralat ini menunjukkan bahawa regex yang disediakan mengandungi operan pengendali ulangan yang tidak sah.

Punca:

Ralat timbul kerana MySQL menggunakan Henry Pelaksanaan ekspresi biasa yang mematuhi POSIX Spencer. Pelaksanaan ini tidak menyokong pengkuantiti tidak tamak seperti "?," yang digunakan dalam PCRE (Perl Compatible Regular Expressions). Oleh itu, menggunakan "?," selepas "*" atau " " dalam regex akan mencetuskan ralat.

Penyelesaian:

Untuk menyelesaikan isu ini, gantikan bukan -pengkuantiti tamak "?" dengan pengkuantiti tamak "*", yang masih akan melakukan pemadanan yang diperlukan:

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

Selain itu, untuk mengelakkan padanan rentetan seperti atau