Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine MySQL-REGEXP-Abfrage fehl, wenn der Wiederholungsoperanden ungültig ist?

Warum schlägt meine MySQL-REGEXP-Abfrage fehl, wenn der Wiederholungsoperanden ungültig ist?

Barbara Streisand
Freigeben: 2024-11-26 15:54:11
Original
662 Leute haben es durchsucht

Why Does My MySQL REGEXP Query Fail with

Fehlgeschlagener regulärer Ausdruck: „Wiederholungsoperator-Operand ungültig“

Beim Versuch, die folgende MySQL-Abfrage auszuführen:

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

Sie stoßen auf das Fehler: #1139 – Vom regulären Ausdruck wurde der Fehler „Operand des Wiederholungsoperators ungültig“ angezeigt. Obwohl der reguläre Ausdruck in Notepad korrekt funktioniert, lehnt MySQL ihn ab.

Verstehen des Problems: POSIX vs. PCRE

Die MySQL-Engine für reguläre Ausdrücke hält sich an POSIX 1003.2, das das Fragezeichen nicht unterstützt (?) als nicht gieriger Modifikator in Quantoren ( und ). Sie können also nicht beschäftigen? Und ? in Ihren regulären Ausdrücken.

Lösung: Verwendung eines Greedy-Quantifizierers

Um dieses Problem zu lösen, verwenden Sie die Greedy-Version des Quantifizierers, die für Ihren beabsichtigten Zweck immer noch ausreicht. Um jedoch eine unerwünschte Übereinstimmung von Elementen wie:

<img>
Nach dem Login kopieren

zu verhindern, fügen Sie eine negierte Zeichenklasse wie folgt ein:

'<img[^>]*src="http://www'
Nach dem Login kopieren

Bedenken Sie, dass das Zeichen „kein Escapezeichen erfordert und dass das .* am Anfang ist implizit.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine MySQL-REGEXP-Abfrage fehl, wenn der Wiederholungsoperanden ungültig ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage