Ekstrak root domain url di Google Sheet

Sep 28 2020

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

4 WiktorStribiżew Sep 28 2020 at 15:49

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 .