Heim >Datenbank >MySQL-Tutorial >Wie verweise ich auf Capture-Gruppen in den regulären Ausdrücken von MySQL?

Wie verweise ich auf Capture-Gruppen in den regulären Ausdrücken von MySQL?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 00:45:03745Durchsuche

How to Reference Capture Groups in MySQL's Regular Expressions?

Referenzieren von Capture-Gruppen in den regulären Ausdrücken von MySQL

MySQL bietet umfassende Unterstützung für reguläre Ausdrücke, einschließlich der Möglichkeit, Teile eines übereinstimmenden Musters zu erfassen und wiederzuverwenden . Allerdings unterscheiden sich Erfassungs- und Referenzierungsgruppen geringfügig von anderen Regex-Implementierungen.

Im bereitgestellten Beispiel versucht REGEXP '^(.)1$', ein Zeichen zu finden, das unmittelbar nach sich selbst wiederholt wird. Leider funktioniert es in MySQL nicht, da Erfassungsgruppen nicht nativ unterstützt werden.

Lösung für MySQL 8

MySQL 8 führt die Funktion REGEXP_REPLACE ein, die Erfassungsgruppen unterstützt . Um auf eine erfasste Gruppe zu verweisen, verwenden Sie $n, wobei n der Index der Erfassungsgruppe ist (beginnend bei 1). Zum Beispiel:

SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)','');
-- Result: "overflowstack"

Im obigen Beispiel stimmt die erste Erfassungsgruppe ((.{5})) mit den ersten fünf Zeichen (Stapel) überein. Die zweite Capture-Gruppe ((.*)) entspricht den restlichen Zeichen (Überlauf). Sie werden dann in der Ersatzzeichenfolge ausgetauscht.

Lösung für MariaDB

MariaDB, ein Fork von MySQL, unterstützt auch Capture-Gruppen in Regex, jedoch mit einem anderen Ansatz. Es verwendet \n, um auf Capture-Gruppen in REGEXP_REPLACE:

SELECT REGEXP_REPLACE('stackoverflow','(.{5})(.*)','\2\1');
-- Result: "overflowstack"
zu verweisen

Das obige ist der detaillierte Inhalt vonWie verweise ich auf Capture-Gruppen in den regulären Ausdrücken von MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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