Anda dapat menggunakan pencocokan pola fungsi di Postgres.
Pertama-tama temukan polanya untuk menangkap semuanya hingga >
fourth keempat karakter.
Untuk memulai pola Anda, Anda harus membuat sub-grup yang menangkap non >
karakter, dan satu >
karakter:
([^>]*>)
Kemudian tangkap empat kali untuk mendapatkan contoh keempat >
([^>]*>){4}
Kemudian, Anda perlu membungkusnya dalam grup sehingga kecocokan mengembalikan keempat contoh:
(([^>]*>){4})
dan letakkan awal simbol string untuk ukuran yang baik untuk memastikannya hanya cocok dari awal String (bukan di tengah):
^(([^>]*>){4})
Berikut adalah contoh regex101 yang berfungsi!
Setelah Anda memiliki pola yang akan mengembalikan apa yang Anda inginkan di elemen grup pertama (yang dapat Anda beri tahu di regex online di panel sisi kanan), Anda harus memilihnya kembali di SQL.
Di Postgres, fungsi substring memiliki opsi untuk menggunakan pola regex untuk mengekstrak teks dari input menggunakan pernyataan 'dari' di substring.
Untuk menyelesaikan, gabungkan semuanya!
select substring(filter_type from '^(([^>]*>){4})')
from filter_table
Lihat sqlfiddle yang berfungsi di sini
Jika Anda ingin mencocokkan seluruh string setiap kali ada kurang dari empat contoh >
, gunakan ekspresi reguler ini:
^(([^>]*>){4}|.*)