Sie können den Musterabgleich verwenden Funktion in Postgres.
Finde zuerst ein Muster heraus um alles bis zum vierten >
zu erfassen Charakter.
Um mit Ihrem Muster zu beginnen, sollten Sie eine Untergruppe erstellen, die nicht >
erfasst Zeichen und ein >
Zeichen:
([^>]*>)
Erfassen Sie das dann viermal, um zur vierten Instanz von >
zu gelangen
([^>]*>){4}
Dann müssen Sie das in eine Gruppe einschließen, damit die Übereinstimmung alle vier Instanzen zurückbringt:
(([^>]*>){4})
und fügen Sie ein Symbol für den Anfang des Strings ein, um sicherzustellen, dass es nur vom Anfang des Strings an übereinstimmt (nicht in der Mitte):
^(([^>]*>){4})
Hier ist ein funktionierendes Regex101-Beispiel dafür!
Sobald Sie das Muster haben, das im ersten Gruppenelement das zurückgibt, was Sie wollen (was Sie an der Online-Regex auf der rechten Seite erkennen können), müssen Sie es wieder in SQL auswählen.
In Postgres die Substring-Funktion hat die Option, ein Regex-Muster zu verwenden, um Text aus der Eingabe zu extrahieren, indem eine 'from'-Anweisung in der Teilzeichenfolge verwendet wird.
Fügen Sie zum Schluss alles zusammen!
select substring(filter_type from '^(([^>]*>){4})')
from filter_table
Ein funktionierendes sqlfiddle finden Sie hier
Wenn Sie die gesamte Zeichenfolge abgleichen möchten, wenn weniger als vier Instanzen von >
vorhanden sind , verwenden Sie diesen regulären Ausdruck:
^(([^>]*>){4}|.*)