Beim Versuch, die folgende MySQL-Abfrage auszuführen:
SELECT text FROM `articles` WHERE content REGEXP '.*<img.*?src=\"http://www' ORDER BY date DESC
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.
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.
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>
zu verhindern, fügen Sie eine negierte Zeichenklasse wie folgt ein:
'<img[^>]*src="http://www'
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!