Você pode usar a correspondência de padrões função no Postgres.
Descobrir primeiro um padrão para capturar tudo até o quarto
> personagem. Para iniciar seu padrão, você deve criar um subgrupo que capture não
> caracteres e um > personagem:([^>]*>)
Em seguida, capture isso quatro vezes para chegar à quarta instância de
> ([^>]*>){4}
Em seguida, você precisará agrupar isso em um grupo para que a correspondência traga de volta todas as quatro instâncias:
(([^>]*>){4})
e coloque um símbolo de início de string para garantir que ele corresponda apenas ao início da String (não no meio):
^(([^>]*>){4})
Aqui está um exemplo de regex101 funcional disso!
Depois de ter o padrão que retornará o que você deseja no primeiro elemento do grupo (que você pode dizer no regex online no painel do lado direito), você precisa selecioná-lo novamente no SQL.
No Postgres, a função substring tem a opção de usar um padrão regex para extrair texto da entrada usando uma instrução 'from' na substring.
Para finalizar, junte tudo!
select substring(filter_type from '^(([^>]*>){4})')
from filter_table
Veja um sqlfiddle funcionando aqui
Se você quiser corresponder a string inteira sempre que houver menos de quatro instâncias de
> , use esta expressão regular: ^(([^>]*>){4}|.*)