I MySQL, REGEXP_SUBSTR()
funktion returnerar delsträngen som matchar det givna reguljära uttrycksmönstret.
Om det inte finns någon matchning (dvs. inmatningssträngen innehåller inte delsträngen) är resultatet NULL
.
Syntax
Syntaxen ser ut så här:
REGEXP_SUBSTR(expr, pat[, pos[, förekomst[, matchningstyp]]])
Där expr
är inmatningssträngen och pat
är det reguljära uttrycksmönstret för delsträngen.
Den valfria pos
argument låter dig ange en position inom strängen för att starta sökningen. Om den utelämnas börjar den vid position 1.
Den valfria förekomsten
argument låter dig ange vilken förekomst av matchningen du ska söka efter. Om den utelämnas används den första förekomsten (förekomst 1).
Den valfria match_type
argument låter dig förfina det reguljära uttrycket. Du kan till exempel använda detta argument för att ange skiftlägeskänslig matchning eller inte.
Exempel 1 – Grundläggande användning
Här är ett grundläggande exempel:
SELECT REGEXP_SUBSTR('Thailand eller Kambodja', 'l.nd') Resultat;
Resultat:
+--------+| Resultat |+--------+| land |+--------+
I det här fallet finns det en matchning och delsträngen returneras.
Exempel 2 – Flera matchningar
Som standard, om det finns flera matchningar inom strängen, returneras den första (även om du kan ange en annan förekomst om det behövs. Vi kommer till det snart):
SELECT REGEXP_SUBSTR('Låna ut för land', 'l.nd') Resultat;
Resultat:
+--------+| Resultat |+--------+| Låna ut |+--------+
Exempel 3 – Ingen matchning
Här är ett exempel där det inte finns någon matchning:
SELECT REGEXP_SUBSTR('Låna ut för land', '^C') Resultat;
Resultat:
+--------+| Resultat |+--------+| NULL |+--------+
Det finns ingen matchning, så resultatet är NULL
.
Exempel 4 – pos
Argument
Här är ett exempel på hur du anger en startposition:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Resultat;
Resultat:
+--------+| Resultat |+--------+| Klipp |+--------+
Vi började på position 2, som kommer efter början av den första förekomsten, så nästa förekomst returneras istället.
Här är ett annat exempel:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1) 'Pos 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) 'Pos 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 6) 'Pos 6';
Resultat:
+-------+-------+-------+| Pos 1 | Pos 2 | Pos 6 |+-------+-------+-------+| Katt | Klipp | Spjälsäng |+-------+-------+-------+
Exempel 5 – förekomsten
Argument
Här är ett exempel på hur du använder förekomst
argument. I alla fall börjar vi på position 1:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Förekomst 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Förekomst 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Förekomst 3';
Resultat:
+--------------+-------------+--------------+| Förekomst 1 | Förekomst 2 | Förekomst 3 |+---------------+----------+-------+| Katt | Klipp | Spjälsäng |+--------------+-------------+--------------+Men om vi börjar på en annan position blir resultatet ett annat:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Förekomst 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Förekomst 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Förekomst 3';Resultat:
+--------------+-------------+--------------+| Förekomst 1 | Förekomst 2 | Förekomst 3 |+---------------+----------+-------+| Klipp | Spjälsäng | NULL |+--------------+--------------+--------------+Detta hände för att vårt startläge kom efter att den första händelsen hade startat. Därför blev förekomst 2 förekomst 1 och förekomst 3 blev förekomst 2. Och eftersom det inte fanns fler förekomster blev resultatet av förekomst 3 NULL (dvs. det fanns ingen förekomst 3).
Exempel 6 –
match_type
ArgumentDu kan ange ytterligare ett argument för att bestämma matchningstypen. Detta låter dig specificera saker som om matchningen är skiftlägeskänslig eller inte, om linjeavslutare ska inkluderas eller inte, etc.
Här är ett exempel på hur du anger en skiftlägeskänslig matchning och en skiftlägesokänslig matchning:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive', REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Inte skiftlägeskänslig';Resultat:
+----------------+------------------------+| Skiftlägeskänslig | Skiftlägeskänslig |+----------------+------------------------+| NULL | Katt |+----------------+------------------------+
match_type
argument kan innehålla följande tecken:
c
- Skaftkänslig matchning.
i
- Verkskiftsokänslig matchning.
m
- Flerradsläge. Känn igen linjeavslutare i strängen. Standardbeteendet är att matcha linjeavslutare endast i början och slutet av stränguttrycket.
n
. tecken matchar radavslutare. Standard är för .
matchar för att stanna i slutet av en rad.u
- Enbart Unix-radändelser. Endast nyradstecknet känns igen som en rad som slutar med
.
,^
och$
matcha operatorer.