Ekstrak root domain url di Google Sheet
Dalam sebuah tabel, saya memiliki daftar url lengkap seperti:
https://www.example.com/page-1/product-x?utm-source=google
Tujuan: Saya ingin mengekstrak bagian nama domain dari url saja:
https://www.example.com/
Saya menggunakan rumus berikut ini:
=REGEXEXTRACT(A1;"^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n?]+)")
Regex berfungsi dengan baik saat mengujinya :
https://www.example.com/
Namun di lembar Google, Ini ditampilkan seperti:
example.com
- Mengapa hasilnya tidak sama untuk regex yang identik?
- Bagaimana cara memperbaikinya di Google Sheet?
Jawaban
Anda dapat memperbaiki pola dengan menghapus grup penangkap (yaitu di sini, ([^:\/\n?]+)=> [^:\/\n?]+) atau dengan mengonversi grup penangkap menjadi grup yang tidak menangkap (yaitu ([^:\/\n?]+)=> (?:[^:\/\n?]+)):
=REGEXEXTRACT(A1;"^(?:https?://)?(?:[^@\n]+@)?(?:www\.)?[^:/\n?]+")
=REGEXEXTRACT(A1;"^(?:https?://)?(?:[^@\n]+@)?(?:www\.)?(?:[^:/\n?]+)")
CATATAN :
- Jika regex berisi grup penangkap, nilai yang
REGEXEXTRACTdiambil akan dikembalikan - Jika tidak ada grup penangkap di regex, fungsi hanya mengembalikan seluruh nilai kecocokan.
Perhatikan bahwa Anda tidak perlu menghindari /garis miring di RE2 regexps karena ditentukan dengan bantuan string literal di Google Sheets.
Pola dapat direduksi menjadi ^(?:https?://)?[^:/\n?]+, yang cocok http://atau https://opsional, dan kemudian cocok dengan satu atau lebih karakter selain /, baris baru, atau ?.
Lihat demo regex RE2 ini .