Możesz użyć dopasowywania wzorców funkcja w Postgresie.
Najpierw wymyśl wzór aby uchwycić wszystko do czwartego >
postać.
Aby rozpocząć swój wzorzec, powinieneś utworzyć podgrupę, która przechwytuje inne niż >
znaków i jeden >
znak:
([^>]*>)
Następnie przechwyć to cztery razy, aby uzyskać czwartą instancję >
([^>]*>){4}
Następnie musisz zapakować to w grupę, aby dopasowanie przywróciło wszystkie cztery wystąpienia:
(([^>]*>){4})
i umieść symbol początku ciągu znaków, aby upewnić się, że pasuje tylko od początku ciągu (nie w środku):
^(([^>]*>){4})
Oto działający przykład regex101!
Kiedy już masz wzorzec, który zwróci to, co chcesz w pierwszym elemencie grupy (o czym możesz się dowiedzieć po wyrażeniu regularnym online w prawym panelu), musisz wybrać go z powrotem w SQL.
W Postgresie funkcja podłańcuchów ma opcję użycia wzorca regex do wyodrębnienia tekstu z danych wejściowych za pomocą instrukcji 'from' w podłańcuchu.
Aby zakończyć, złóż to wszystko razem!
select substring(filter_type from '^(([^>]*>){4})')
from filter_table
Zobacz działający sqlfiddle tutaj
Jeśli chcesz dopasować cały ciąg, gdy są mniej niż cztery wystąpienia >
, użyj tego wyrażenia regularnego:
^(([^>]*>){4}|.*)