Regex untuk mengekstrak string di Excel (satu atau semua kecocokan)

  • Bagikan Ini
Michael Brown

Dalam tutorial ini, Anda akan belajar cara menggunakan ekspresi reguler di Excel untuk menemukan dan mengekstrak substring yang cocok dengan pola tertentu.

Microsoft Excel menyediakan sejumlah fungsi untuk mengekstrak teks dari sel. Fungsi-fungsi tersebut dapat mengatasi sebagian besar tantangan ekstraksi string di lembar kerja Anda. Sebagian besar, tetapi tidak semua. Ketika fungsi Teks tersandung, ekspresi reguler datang untuk menyelamatkan. Tunggu... Excel tidak memiliki fungsi RegEx! Benar, tidak ada fungsi bawaan. Tapi tidak ada yang akan mencegah Anda menggunakan fungsi Anda sendiri :)

    Fungsi Excel VBA Regex untuk mengekstrak string

    Untuk menambahkan fungsi Ekstrak Regex kustom ke Excel Anda, tempel kode berikut di editor VBA. Untuk mengaktifkan ekspresi reguler di VBA, kami menggunakan objek Microsoft RegExp bawaan.

    Public Function RegExpExtract(text As String , pattern As String , Optional instance_num As Integer = 0, Optional match_case As Boolean = True ) Dim text_matches() As String Dim matches_index As Integer On Error GoTo ErrHandl RegExpExtract = "" Set regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = pattern regex.Global = True regex.MultiLine = True If True = match_case Thenregex.ignorecase = False Else regex.ignorecase = True End If Set matches = regex.Execute(text) If 0 <matches.Count Then If (0 = instance_num) Then ReDim text_matches(matches.Count - 1, 0) For matches_index = 0 To matches.Count - 1 text_matches(matches_index, 0) = matches.Item(matches_index) Next matches_index RegExpExtract = text_matches Else RegExpExtract = matches.Item(instance_num - 1) EndJika End If Exit Function ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function

    Jika Anda memiliki sedikit pengalaman dengan VBA, panduan pengguna langkah demi langkah mungkin terbukti bermanfaat: Cara memasukkan kode VBA di Excel.

    Catatan. Agar fungsi ini berfungsi, pastikan untuk menyimpan file Anda sebagai buku kerja berkemampuan makro (.xlsm).

    Sintaks RegExpExtract

    The RegExpExtract fungsi mencari string input untuk nilai yang cocok dengan ekspresi reguler dan mengekstrak satu atau semua kecocokan.

    Fungsi ini memiliki sintaksis berikut ini:

    RegExpExtract(teks, pola, [instance_num], [match_case])

    Di mana:

    • Teks (wajib) - string teks yang akan dicari.
    • Pola (wajib) - ekspresi reguler yang akan dicocokkan. Ketika diberikan secara langsung dalam formula, pola harus diapit dengan tanda kutip ganda.
    • Instance_num (opsional) - nomor seri yang menunjukkan instance mana yang akan diekstrak. Jika dihilangkan, mengembalikan semua kecocokan yang ditemukan (default).
    • Match_case (opsional) - menentukan apakah akan mencocokkan atau mengabaikan kasus teks. Jika TRUE atau dihilangkan (default), pencocokan case-sensitive dilakukan; jika FALSE - case-insensitive.

    Fungsi ini berfungsi di semua versi Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 dan Excel 2010.

    4 hal yang harus Anda ketahui tentang RegExpExtract

    Untuk menggunakan fungsi ini secara efektif di Excel Anda, ada beberapa hal penting yang harus diperhatikan:

    1. Secara default, fungsi mengembalikan semua kecocokan yang ditemukan ke dalam sel yang berdekatan seperti yang ditunjukkan dalam contoh ini. Untuk mendapatkan kejadian tertentu, berikan nomor yang sesuai ke instance_num argumen.
    2. Secara default, fungsinya adalah peka huruf besar-kecil Untuk pencocokan case-insensitive, tetapkan match_case argumen ke FALSE. Karena keterbatasan VBA, konstruksi case-insensitive (?i) tidak akan berfungsi.
    3. Jika pola yang valid tidak ditemukan , fungsi tersebut tidak mengembalikan apa-apa (string kosong).
    4. Jika pola tidak valid , terjadi kesalahan #VALUE!

    Sebelum Anda mulai menggunakan fungsi kustom ini di lembar kerja Anda, Anda perlu memahami kemampuannya, bukan? Contoh di bawah ini mencakup beberapa kasus penggunaan umum dan menjelaskan mengapa perilakunya mungkin berbeda di Dynamic Array Excel (Microsoft 365 dan Excel 2021) dan Excel tradisional (2019 dan versi yang lebih lama).

    Catatan. Contoh-contoh regex di luar ditulis untuk set data sederhana yang adil. Kami tidak dapat menjamin mereka akan bekerja dengan sempurna di lembar kerja Anda yang sebenarnya. Mereka yang memiliki pengalaman dengan regex akan setuju bahwa menulis ekspresi reguler adalah jalan yang tidak pernah berakhir menuju kesempurnaan - hampir selalu ada cara untuk membuatnya lebih elegan atau mampu menangani rentang data input yang lebih luas.

    Regex untuk mengekstrak angka dari string

    Mengikuti pepatah dasar pengajaran "dari yang sederhana ke yang kompleks", kita akan mulai dengan kasus yang sangat sederhana: mengekstrak angka dari string.

    Hal pertama yang harus Anda putuskan adalah nomor mana yang akan diambil: pertama, terakhir, kejadian tertentu atau semua nomor.

    Ekstrak nomor pertama

    Ini sesederhana regex. Mengingat bahwa \d berarti angka apa pun dari 0 hingga 9, dan + berarti satu kali atau lebih, ekspresi reguler kita mengambil bentuk ini:

    Pola : \d+

    Set instance_num ke 1 dan Anda akan mendapatkan hasil yang diinginkan:

    =RegExpExtract(A5, "\d+", 1)

    Di mana A5 adalah string asli.

    Untuk kenyamanan, Anda bisa memasukkan pola dalam sel yang sudah ditentukan sebelumnya ($A$2) dan mengunci alamatnya dengan tanda $:

    =RegExpExtract(A5, $A$2, 1)

    Dapatkan nomor terakhir

    Untuk mengekstrak angka terakhir dalam sebuah string, berikut pola yang digunakan:

    Pola : (\d+)(?!!.*\d)

    Diterjemahkan ke dalam bahasa manusia, dikatakan: temukan angka yang tidak diikuti (di mana saja, tidak hanya segera) oleh angka lain. Untuk mengekspresikan ini, kita menggunakan lookahead negatif (?!!.*\d), yang berarti bahwa di sebelah kanan pola tidak boleh ada digit lain (\d) terlepas dari berapa banyak karakter lain yang ada sebelumnya.

    =RegExpExtract(A5, "(\d+)(?!!.*\d)")

    Tips:

    • Untuk mendapatkan kejadian spesifik , gunakan \d+ untuk pola dan nomor seri yang sesuai untuk instance_num .
    • Rumus untuk mengekstrak semua angka dibahas dalam contoh berikutnya.

    Regex untuk mengekstrak semua kecocokan

    Mendorong contoh kita sedikit lebih jauh, misalkan Anda ingin mendapatkan semua angka dari sebuah string, bukan hanya satu.

    Seperti yang mungkin Anda ingat, jumlah kecocokan yang diekstrak dikendalikan oleh opsional instance_num defaultnya adalah semua kecocokan, jadi Anda cukup menghilangkan parameter ini:

    =RegExpExtract(A2, "\d+")

    Rumusnya bekerja dengan indah untuk satu sel, tetapi perilakunya berbeda dalam Dynamic Array Excel dan versi non-dinamis.

    Excel 365 dan Excel 2021

    Karena dukungan untuk array dinamis, rumus biasa secara otomatis tumpah ke dalam sel sebanyak yang diperlukan untuk menampilkan semua hasil yang dihitung. Dalam istilah Excel, ini disebut rentang tumpah:

    Excel 2019 dan lebih rendah

    Di Excel pra-dinamis, rumus di atas hanya akan mengembalikan satu kecocokan. Untuk mendapatkan beberapa kecocokan, Anda perlu menjadikannya rumus array. Untuk ini, pilih rentang sel, ketikkan rumusnya, dan tekan Ctrl + Shift + Enter untuk menyelesaikannya.

    Kelemahan dari pendekatan ini adalah banyaknya error #N/A yang muncul di "sel ekstra". Sayangnya, tidak ada yang bisa dilakukan untuk mengatasinya (baik IFERROR maupun IFNA tidak bisa memperbaikinya, sayangnya).

    Ekstrak semua kecocokan dalam satu sel

    Saat memproses kolom data, pendekatan di atas jelas tidak akan berhasil. Dalam kasus ini, solusi ideal adalah mengembalikan semua kecocokan dalam satu sel. Untuk menyelesaikannya, sajikan hasil RegExpExtract ke fungsi TEXTJOIN dan pisahkan dengan pembatas apa pun yang Anda suka, katakanlah koma dan spasi:

    =TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))

    Catatan Karena fungsi TEXTJOIN hanya tersedia di Excel untuk Microsoft 365, Excel 2021 dan Excel 2019, rumus tidak akan berfungsi di versi yang lebih lama.

    Regex untuk mengekstrak teks dari string

    Mengekstrak teks dari string alfanumerik adalah tugas yang cukup menantang di Excel. Dengan regex, itu menjadi semudah pie. Cukup gunakan kelas yang dinegasikan untuk mencocokkan semua yang bukan digit.

    Pola : [^\d]+

    Untuk mendapatkan substring dalam sel individual (rentang tumpahan), rumusnya adalah:

    =RegExpExtract(A5, "[^\d]+")

    Untuk menampilkan semua kecocokan ke dalam satu sel, sarangkan fungsi RegExpExtract di TEXTJOIN seperti ini:

    =TEXTJOIN("", TRUE, RegExpExtract(A5, "[^\d]+"))

    Regex untuk mengekstrak alamat email dari string

    Untuk menarik alamat email dari string yang berisi banyak informasi yang berbeda, tulis ekspresi reguler yang mereplikasi struktur alamat email.

    Pola : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}

    Memecah regex ini, inilah yang kita dapatkan:

    • [\w\.\-]+ adalah nama pengguna yang dapat menyertakan 1 atau lebih karakter alfanumerik, garis bawah, titik dan tanda hubung.
    • @ simbol
    • [A-Za-z0-9\.\-]+ adalah nama domain yang terdiri dari: huruf besar dan huruf kecil, digit, tanda hubung, dan titik (jika ada subdomain). Underscore tidak diperbolehkan di sini, oleh karena itu 3 set karakter yang berbeda (seperti A-Z a-z dan 0-9) digunakan sebagai pengganti \w yang cocok dengan huruf, digit, atau garis bawah apa pun.
    • \.[A-Za-z]{2,24} adalah domain tingkat atas. Terdiri dari titik yang diikuti oleh huruf besar dan huruf kecil. Sebagian besar domain tingkat atas terdiri dari 3 huruf (misalnya .com .org, .edu, dll.), Tetapi secara teori domain ini dapat berisi dari 2 hingga 24 huruf (TLD terpanjang yang terdaftar).

    Dengan mengasumsikan string berada di A5 dan polanya di A2, rumus untuk mengekstrak alamat email adalah:

    =RegExpExtract(A5, $A$2)

    Regex untuk mengekstrak domain dari email

    Dalam hal mengekstrak domain email, pemikiran pertama yang terlintas dalam pikiran adalah menggunakan capturing group untuk menemukan teks yang segera mengikuti karakter @.

    Pola : @([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})

    Sajikan ke fungsi RegExp kita:

    =RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")

    Dan Anda akan mendapatkan hasil ini:

    Dengan ekspresi reguler klasik, apa pun di luar grup penangkap tidak termasuk dalam ekstraksi. Tidak ada yang tahu mengapa VBA RegEx bekerja secara berbeda dan menangkap "@" juga. Untuk menghilangkannya, Anda dapat menghapus karakter pertama dari hasil dengan menggantinya dengan string kosong.

    =REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-\.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")

    Ekspresi reguler untuk mengekstrak nomor telepon

    Nomor telepon dapat ditulis dalam berbagai cara, itulah sebabnya mengapa hampir tidak mungkin untuk menemukan solusi yang bekerja dalam semua keadaan. Namun demikian, Anda dapat menuliskan semua format yang digunakan dalam dataset Anda dan mencoba untuk mencocokkannya.

    Untuk contoh ini, kita akan membuat regex yang akan mengekstrak nomor telepon dalam salah satu format ini:

    (123) 345-6789

    (123) 345 6789

    (123)3456789

    123-345-6789

    123.345.6789

    123 345 6789

    1233456789

    Pola : \(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b

    • Bagian pertama \(?\d{3} cocok dengan nol atau satu kurung pembuka diikuti oleh tiga digit d{3}.
    • Bagian [-\. \)]* berarti karakter apa pun dalam tanda kurung siku yang muncul 0 kali atau lebih: tanda hubung, titik, spasi, atau tanda kurung penutup.
    • Selanjutnya, kita memiliki tiga digit lagi d{3} yang diikuti oleh tanda hubung, titik atau spasi [-\. ]? muncul 0 atau 1 kali.
    • Setelah itu, ada kelompok empat digit \d{4}.
    • Terakhir, ada batas kata \b yang mendefinisikan bahwa nomor telepon yang kita cari tidak dapat menjadi bagian dari nomor yang lebih besar.

    Rumus lengkapnya berbentuk seperti ini:

    =RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")

    Perlu diketahui bahwa regex di atas dapat mengembalikan beberapa hasil positif palsu seperti 123) 456 7899 atau (123 456 7899. Versi di bawah ini memperbaiki masalah ini. Namun, sintaksis ini hanya berfungsi dalam fungsi VBA RegExp, bukan dalam ekspresi reguler klasik.

    Pola : (\(\d{3}\)

    Regex untuk mengekstrak tanggal dari string

    Ekspresi reguler untuk mengekstrak tanggal tergantung pada format di mana tanggal muncul dalam string. Misalnya:

    Untuk mengekstrak tanggal seperti 1/1/21 atau 01/01/2021, regex-nya adalah: \d{1,2}\/\d{1,2}\/(\d{4}

    Ini mencari kelompok 1 atau 2 digit d{1,2} diikuti oleh garis miring, diikuti oleh kelompok 1 atau 2 digit lainnya, diikuti oleh garis miring, diikuti oleh kelompok 4 atau 2 digit (\d{4}).kondisi pertama dalam konstruksi alternasi ATAU dicocokkan, kondisi yang tersisa tidak diperiksa.

    Untuk mengambil tanggal seperti 1-Jan-21 atau 01-Jan-2021, polanya adalah: \d{1,2}-[A-Za-z]{3}-\d{2,4}

    Ini mencari kelompok 1 atau 2 digit, diikuti oleh tanda hubung, diikuti oleh kelompok 3 huruf besar atau huruf kecil, diikuti oleh tanda hubung, diikuti oleh kelompok 4 atau 2 digit.

    Setelah menggabungkan kedua pola tersebut, kita mendapatkan regex berikut:

    Pola : \b\d{1,2}[\/-](\d{1,2}

    Di mana:

    • Bagian pertama adalah 1 atau 2 digit: \d{1,2}
    • Bagian kedua adalah 1 atau 2 digit atau 3 huruf: (\d{1,2})
    • Bagian ketiga adalah kelompok 4 atau 2 digit: (\d{4}
    • Pembatas adalah garis miring ke depan atau tanda hubung: [\/-]
    • Batas kata \b ditempatkan di kedua sisi untuk memperjelas bahwa tanggal adalah kata yang terpisah, dan bukan bagian dari string yang lebih besar.

    Seperti yang dapat Anda lihat pada gambar di bawah ini, ia berhasil menarik tanggal dan meninggalkan substring seperti 11/22/333. Namun, ia masih mengembalikan hasil positif palsu. Dalam kasus kami, substring 11-ABC-2222 di A9 secara teknis cocok dengan format tanggal dd-mmm-yyyy dan oleh karena itu diekstraksi.

    Untuk mengeliminasi positif palsu, Anda bisa mengganti bagian [A-Za-z]{3} dengan daftar lengkap singkatan bulan 3-huruf:

    Pola : \b\d{1,2}[\/-](\d{1,2}

    Untuk mengabaikan kasus huruf, kita menetapkan argumen terakhir dari fungsi kustom kita ke FALSE:

    =RegExpExtract(A5, $A$2, 1, FALSE)

    Dan kali ini, kami mendapatkan hasil yang sempurna:

    Regex untuk mengekstrak waktu dari string

    Untuk mendapatkan waktu di hh:mm atau hh:mm:ss format, ekspresi berikut ini akan bekerja dengan baik.

    Pola : \b(0?[0-9]

    Memecah regex ini, Anda bisa melihat 2 bagian yang dipisahkan oleh

    Ekspresi 1 : \b(0?[0-9]

    Mengambil waktu dengan AM/PM.

    Jam bisa berupa angka apa saja dari 0 sampai 12. Untuk mendapatkannya, kita menggunakan konstruksi OR ([0-9]

    • [0-9] cocok dengan angka apa pun dari 0 hingga 9
    • 1[0-2] cocok dengan angka apa pun dari 10 hingga 12

    Menit [0-5] \ d adalah angka apa pun dari 00 hingga 59.

    Kedua (:[0-5]\d)? juga angka apa pun dari 00 hingga 59. Pengukur ? berarti nol atau satu kejadian karena detik mungkin atau mungkin tidak termasuk dalam nilai waktu.

    Ekspresi 2 : \b([0-9]

    Mengekstrak waktu tanpa AM/PM.

    The jam dapat berupa angka apa pun dari 0 hingga 32. Untuk mendapatkannya, konstruksi OR yang berbeda ([0-9]

    • [0-9] cocok dengan angka apa pun dari 0 hingga 9
    • [0-1] \ d cocok dengan angka apa pun dari 00 hingga 19
    • 2[0-3] cocok dengan angka apa pun dari 20 hingga 23

    The menit dan kedua bagiannya sama seperti pada ungkapan 1 di atas.

    Lookahead negatif (?!:) ditambahkan ke string lompatan seperti 20:30:80.

    Karena PM/AM bisa berupa huruf besar atau huruf kecil, kita membuat fungsi ini tidak sensitif huruf besar-kecil:

    =RegExpExtract(A5, $A$2, 1, FALSE)

    Mudah-mudahan, contoh di atas memberi Anda beberapa ide tentang cara menggunakan ekspresi reguler di lembar kerja Excel Anda. Sayangnya, tidak semua fitur ekspresi reguler klasik didukung dalam VBA. Jika tugas Anda tidak dapat diselesaikan dengan VBA RegExp, saya mendorong Anda untuk membaca bagian selanjutnya yang membahas lebih banyak fungsi .NET Regex yang lebih kuat.

    Fungsi Regex berbasis .NET kustom untuk mengekstrak teks di Excel

    Tidak seperti fungsi VBA RegExp yang dapat ditulis oleh pengguna Excel mana pun, .NET RegEx adalah ranah pengembang. Microsoft .NET Framework mendukung sintaksis ekspresi reguler berfitur lengkap yang kompatibel dengan Perl 5. Artikel ini tidak akan mengajari Anda cara menulis fungsi-fungsi seperti itu (saya bukan seorang programmer dan tidak memiliki ide sedikit pun tentang cara melakukannya :)

    Empat fungsi canggih yang diproses oleh mesin RegEx .NET standar sudah ditulis oleh pengembang kami dan disertakan dalam Ultimate Suite. Di bawah ini, kami akan mendemonstrasikan beberapa penggunaan praktis fungsi yang dirancang khusus untuk mengekstrak teks di Excel.

    Tip. Untuk informasi tentang sintaks .NET Regex, silakan lihat Bahasa Ekspresi Reguler .NET.

    Cara mengekstrak sengatan di Excel menggunakan ekspresi reguler

    Dengan asumsi Anda telah menginstal Ultimate Suite versi terbaru, mengekstrak teks menggunakan ekspresi reguler bermuara pada dua langkah ini:

    1. Pada Data Ablebits tab, di tab Teks kelompok, klik Alat Regex .
    2. Pada Alat Regex panel, pilih sumber data, masukkan pola Regex Anda, dan pilih Ekstrak Untuk mendapatkan hasil sebagai fungsi kustom, bukan nilai, pilih opsi Sisipkan sebagai formula Setelah selesai, klik kotak centang Ekstrak tombol.

    Hasilnya akan muncul dalam kolom baru di sebelah kanan data asli Anda:

    Sintaks AblebitsRegexExtract

    Fungsi kustom kita memiliki sintaksis berikut ini:

    AblebitsRegexExtract(referensi, regular_expression)

    Di mana:

    • Referensi (wajib) - referensi ke sel yang berisi string sumber.
    • Regular_expression (wajib) - pola regex yang akan dicocokkan.

    Catatan penting! Fungsi ini hanya berfungsi pada mesin dengan Ultimate Suite untuk Excel terinstal.

    Catatan penggunaan

    Untuk membuat kurva pembelajaran Anda lebih lancar dan pengalaman Anda lebih menyenangkan, harap perhatikan poin-poin ini:

    1. Untuk membuat formula, Anda bisa menggunakan Alat Regex , atau Excel Menyisipkan fungsi Setelah rumus dimasukkan, Anda dapat mengelolanya (mengedit, menyalin, atau memindahkan) seperti rumus asli lainnya.
    2. Pola yang Anda masukkan pada Alat Regex juga memungkinkan untuk menyimpan ekspresi reguler dalam sel terpisah. Dalam kasus ini, cukup gunakan referensi sel untuk argumen ke-2.
    3. Fungsi ini mengekstrak pertama kali ditemukan kecocokan .
    4. Secara default, fungsinya adalah peka huruf besar-kecil Untuk pencocokan case-insensitive, gunakan pola (?i).
    5. Jika tidak ditemukan kecocokan, kesalahan #N/A dikembalikan.

    Regex untuk mengekstrak string di antara dua karakter

    Untuk mendapatkan teks di antara dua karakter, Anda bisa menggunakan capturing group atau look-around.

    Katakanlah Anda ingin mengekstrak teks di antara tanda kurung. Kelompok penangkap adalah cara termudah.

    Pola 1 : \[(.*?)\]

    Dengan lookbehind dan lookahead yang positif, hasilnya akan persis sama.

    Pola 2 (?<=\[)(.*?)(?=\])

    Harap perhatikan bahwa grup penangkap (.*?) kami melakukan pencarian malas untuk teks di antara dua tanda kurung - dari [ yang pertama hingga ] yang pertama. Kelompok penangkap tanpa tanda tanya (.*) akan melakukan pencarian serakah dan menangkap segalanya dari yang pertama [ hingga yang terakhir].

    Dengan pola di A2, rumusnya adalah sebagai berikut:

    =AblebitsRegexExtract(A5, $A$2)

    Cara mendapatkan semua pertandingan

    Seperti yang telah disebutkan, fungsi AblebitsRegexExtract hanya dapat mengekstrak satu kecocokan. Untuk mendapatkan semua kecocokan, Anda dapat menggunakan fungsi VBA yang telah kita bahas sebelumnya. Namun, ada satu peringatan - VBA RegExp tidak mendukung pengambilan grup, jadi pola di atas akan mengembalikan karakter "batas" juga, tanda kurung dalam kasus kita.

    =TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))

    Untuk menghilangkan tanda kurung, SUBSTITUTE mereka dengan string kosong ("") menggunakan rumus ini:

    =SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""),"[","")

    Untuk keterbacaan yang lebih baik, kita menggunakan koma untuk pembatas.

    Regex untuk mengekstrak teks di antara dua string

    Pendekatan yang telah kita lakukan untuk menarik teks di antara dua karakter juga akan bekerja untuk mengekstrak teks di antara dua string.

    Misalnya, untuk mendapatkan segala sesuatu di antara "test 1" dan "test 2", gunakan regular expression berikut ini.

    Pola : tes 1(.*?)tes 2

    Rumus lengkapnya adalah:

    =AblebitsRegexExtract(A5, "test 1(.*?)test 2")

    Regex untuk mengekstrak domain dari URL

    Bahkan dengan ekspresi reguler, mengekstrak nama domain dari URL bukanlah tugas yang sepele. Elemen kunci yang melakukan trik ini adalah grup yang tidak menangkap. Tergantung pada tujuan akhir Anda, pilih salah satu regex di bawah ini.

    Untuk mendapatkan nama domain lengkap termasuk subdomain

    Pola (??:https?\:

    Untuk mendapatkan tingkat kedua domain tanpa subdomain

    Pola (??:https?\:

    Sekarang, mari kita lihat bagaimana ekspresi reguler ini bekerja pada contoh "//www.mobile.ablebits.com" sebagai contoh URL:

    • (?:https?\:
    • \//\/ - dua garis miring ke depan (masing-masing didahului oleh garis miring ke belakang untuk menghindari arti khusus dari garis miring ke depan dan menafsirkannya secara harfiah).
    • (?:[A-Za-z\d\-\.]{2,255}\.)? - grup yang tidak menangkap untuk mengidentifikasi domain tingkat ketiga, tingkat keempat, dll., jika ada ( seluler Dalam pola pertama, ia ditempatkan dalam kelompok penangkapan yang lebih besar untuk mendapatkan semua subdomain tersebut dimasukkan ke dalam ekstraksi. Subdomain dapat terdiri dari 2 hingga 255 karakter, oleh karena itu {2,255} quantifier.
    • ([A-Za-z\d\-]{1,63}\.[A-Za-z]{2,24}) - menangkap kelompok untuk mengekstrak domain tingkat kedua ( ablebits ) dan domain tingkat atas ( com Panjang maksimal domain tingkat kedua adalah 63 karakter. Domain tingkat atas terpanjang yang ada saat ini berisi 24 karakter.

    Tergantung pada ekspresi reguler mana yang dimasukkan dalam A2, rumus di bawah ini akan menghasilkan hasil yang berbeda:

    =AblebitsRegexExtract(A5, $A$2)

    Regex untuk mengekstrak nama domain lengkap dengan semua subdomain:

    Regex untuk mengekstrak tingkat kedua domain tanpa subdomain:

    Itulah cara mengekstrak bagian teks di Excel menggunakan ekspresi reguler. Saya berterima kasih telah membaca dan berharap dapat melihat Anda di blog kami minggu depan!

    Unduhan yang tersedia

    Contoh Ekstrak Regex Excel (file .xlsm)

    Versi uji coba Ultimate Suite (file .exe)

    Michael Brown adalah penggemar teknologi berdedikasi dengan hasrat untuk menyederhanakan proses kompleks menggunakan perangkat lunak. Dengan pengalaman lebih dari satu dekade di industri teknologi, dia telah mengasah keahliannya di Microsoft Excel dan Outlook, serta Google Spreadsheet dan Dokumen. Blog Michael didedikasikan untuk berbagi pengetahuan dan keahliannya dengan orang lain, memberikan tip dan tutorial yang mudah diikuti untuk meningkatkan produktivitas dan efisiensi. Apakah Anda seorang profesional berpengalaman atau pemula, blog Michael menawarkan wawasan berharga dan saran praktis untuk mendapatkan hasil maksimal dari perangkat lunak penting ini.