U kunt de patroonovereenkomst gebruiken functie in Postgres.
Ontdek eerst een patroon om alles vast te leggen tot de vierde >
karakter.
Om je patroon te starten, moet je een subgroep maken die niet >
. vastlegt tekens en één >
karakter:
([^>]*>)
Leg dat dan vier keer vast om bij de vierde instantie van >
te komen
([^>]*>){4}
Vervolgens moet je dat in een groep stoppen, zodat de match alle vier instanties terugbrengt:
(([^>]*>){4})
en plaats een begin van het tekenreekssymbool om er zeker van te zijn dat het alleen overeenkomt vanaf het begin van de tekenreeks (niet in het midden):
^(([^>]*>){4})
Hier is een werkend regex101-voorbeeld daarvan!
Zodra je het patroon hebt dat teruggeeft wat je wilt in het eerste groepselement (wat je kunt zien in de online regex in het rechterpaneel), moet je het terug selecteren in de SQL.
In Postgres, de substringfunctie heeft een optie om een regex-patroon te gebruiken om tekst uit de invoer te extraheren met behulp van een 'from'-instructie in de substring.
Om te eindigen, zet alles bij elkaar!
select substring(filter_type from '^(([^>]*>){4})')
from filter_table
Bekijk hier een werkende sqlfiddle
Als u de hele tekenreeks wilt matchen wanneer er minder dan vier exemplaren van >
. zijn , gebruik deze reguliere expressie:
^(([^>]*>){4}|.*)