In MySQL is de REGEXP_SUBSTR() functie retourneert de subtekenreeks die overeenkomt met het gegeven patroon voor reguliere expressies.
Als er geen overeenkomst is (d.w.z. de invoertekenreeks bevat de subtekenreeks niet), is het resultaat NULL .
Syntaxis
De syntaxis gaat als volgt:
REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]])
Waar expr is de invoerreeks en pat is het reguliere expressiepatroon voor de subtekenreeks.
De optionele pos argument stelt u in staat om een positie in de tekenreeks op te geven om de zoekopdracht te starten. Indien weggelaten, begint het op positie 1.
Het optionele occurrence argument stelt u in staat om te specificeren naar welk exemplaar van de overeenkomst moet worden gezocht. Indien weggelaten, wordt de eerste instantie gebruikt (gebeurtenis 1).
Het optionele match_type argument kunt u de reguliere expressie verfijnen. U kunt dit argument bijvoorbeeld gebruiken om hoofdlettergevoelige overeenkomsten op te geven of niet.
Voorbeeld 1 – Basisgebruik
Hier is een eenvoudig voorbeeld:
SELECT REGEXP_SUBSTR('Thailand or Cambodia', 'l.nd') Result; Resultaat:
+--------+ | Result | +--------+ | land | +--------+
In dit geval is er een overeenkomst en wordt de subtekenreeks geretourneerd.
Voorbeeld 2 – Meerdere overeenkomsten
Als er meerdere overeenkomsten in de tekenreeks zijn, wordt standaard de eerste geretourneerd (hoewel u indien nodig een andere instantie kunt opgeven. Daar komen we snel op terug):
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd') Result; Resultaat:
+--------+ | Result | +--------+ | Lend | +--------+
Voorbeeld 3 – Geen overeenkomst
Hier is een voorbeeld waarbij er geen overeenkomst is:
SELECT REGEXP_SUBSTR('Lend for land', '^C') Result; Resultaat:
+--------+ | Result | +--------+ | NULL | +--------+
Er is geen overeenkomst, dus het resultaat is NULL .
Voorbeeld 4 – De pos Argument
Hier is een voorbeeld van het specificeren van een startpositie:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Result; Resultaat:
+--------+ | Result | +--------+ | Cut | +--------+
We zijn begonnen op positie 2, die komt na het begin van het eerste exemplaar, dus in plaats daarvan wordt het volgende exemplaar geretourneerd.
Hier is nog een voorbeeld:
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'; Resultaat:
+-------+-------+-------+ | Pos 1 | Pos 2 | Pos 6 | +-------+-------+-------+ | Cat | Cut | Cot | +-------+-------+-------+
Voorbeeld 5 – Het occurrence Argument
Hier is een voorbeeld van het gebruik van de occurrence argument. In alle gevallen beginnen we op positie 1:
SELECT
REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Occurrence 1',
REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Occurrence 2',
REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Occurrence 3'; Resultaat:
+--------------+--------------+--------------+ | Occurrence 1 | Occurrence 2 | Occurrence 3 | +--------------+--------------+--------------+ | Cat | Cut | Cot | +--------------+--------------+--------------+
Als we echter op een andere positie beginnen, is het resultaat anders:
SELECT
REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Occurrence 1',
REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Occurrence 2',
REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Occurrence 3'; Resultaat:
+--------------+--------------+--------------+ | Occurrence 1 | Occurrence 2 | Occurrence 3 | +--------------+--------------+--------------+ | Cut | Cot | NULL | +--------------+--------------+--------------+
Dit gebeurde omdat onze startpositie kwam nadat het eerste voorval was begonnen. Daarom werd voorval 2 voorval 1 en voorval 3 werd voorval 2. En omdat er geen voorvallen meer waren, was het resultaat van voorval 3 NULL (d.w.z. er was geen voorval 3).
Voorbeeld 6 – Het match_type Argument
U kunt een extra argument opgeven om het zoektype te bepalen. Hiermee kunt u dingen specificeren zoals of de overeenkomst hoofdlettergevoelig is, of u lijnafsluitingen wilt opnemen, enz.
Hier is een voorbeeld van het specificeren van een hoofdlettergevoelige overeenkomst en een hoofdletterongevoelige overeenkomst:
SELECT
REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive',
REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Case-Insensitive'; Resultaat:
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | NULL | Cat | +----------------+------------------+
Het match_type argument kan de volgende tekens bevatten:
c- Hoofdlettergevoelige overeenkomst.
i- Hoofdletterongevoelige overeenkomst.
m- Modus met meerdere regels. Herken lijnafsluitingen binnen de string. Het standaardgedrag is om regelafsluitingen alleen aan het begin en einde van de tekenreeksuitdrukking te laten overeenkomen.
n- De
.karakter komt overeen met regelafsluitingen. De standaard is voor.overeenkomend om te stoppen aan het einde van een regel. u- Alleen Unix regeleindes. Alleen het teken van de nieuwe regel wordt herkend als een regel die eindigt met de
.,^, en$match operators.