Contoh RegEx Excel: menggunakan ekspresi reguler dalam rumus

  • Bagikan Ini
Michael Brown

Tidak pernah bisa mengerti mengapa ekspresi reguler tidak didukung dalam rumus Excel? Sekarang, mereka :) Dengan fungsi kustom kami, Anda dapat dengan mudah menemukan, mengganti, mengekstrak, dan menghapus string yang cocok dengan pola tertentu.

Sekilas, Excel memiliki semua yang Anda perlukan untuk manipulasi string teks. Hmm... bagaimana dengan ekspresi reguler? Ups, tidak ada fungsi Regex bawaan di Excel. Tapi tidak ada yang bilang kita tidak bisa membuat fungsi Regex sendiri :)

    Apa itu ekspresi reguler?

    Ekspresi reguler (alias regex atau regexp ) adalah urutan karakter yang dikodekan secara khusus yang mendefinisikan pola pencarian. Dengan menggunakan pola itu, Anda dapat menemukan kombinasi karakter yang cocok dalam string atau memvalidasi input data. Jika Anda sudah terbiasa dengan notasi wildcard, Anda dapat menganggap regex sebagai versi lanjutan dari wildcard.

    Ekspresi reguler memiliki sintaksisnya sendiri yang terdiri dari karakter khusus, operator, dan konstruksi. Misalnya, [0-5] cocok dengan angka tunggal apa pun dari 0 hingga 5.

    Ekspresi reguler digunakan dalam banyak bahasa pemrograman termasuk JavaScript dan VBA. Yang terakhir ini memiliki objek RegExp khusus, yang akan kita manfaatkan untuk membuat fungsi kustom kita.

    Apakah Excel mendukung regex?

    Sayangnya, tidak ada fungsi Regex bawaan di Excel. Untuk dapat menggunakan ekspresi reguler dalam rumus Anda, Anda harus membuat fungsi yang ditentukan pengguna Anda sendiri (berbasis VBA atau .NET) atau menginstal alat pihak ketiga yang mendukung regex.

    Lembar contekan Excel Regex

    Apakah pola regex sangat sederhana atau sangat canggih, itu dibangun menggunakan sintaksis umum. Tutorial ini tidak bertujuan untuk mengajarkan Anda ekspresi reguler. Untuk ini, ada banyak sumber daya online, dari tutorial gratis untuk pemula hingga kursus premium untuk pengguna tingkat lanjut.

    Di bawah ini kami menyediakan referensi cepat untuk pola RegEx utama yang akan membantu Anda memahami dasar-dasarnya. Ini juga dapat berfungsi sebagai lembar contekan Anda saat mempelajari contoh-contoh lebih lanjut.

    Jika Anda merasa nyaman dengan regular expressions, Anda bisa langsung ke fungsi RegExp.

    Karakter

    Ini adalah pola yang paling sering digunakan untuk mencocokkan karakter tertentu.

    Pola Deskripsi Contoh Cocok
    . Karakter wildcard: cocok dengan karakter tunggal apa pun kecuali jeda baris .ot titik , panas , pot , @ot
    \d Karakter digit: digit tunggal apa pun dari 0 hingga 9 \d Dalam a1b , cocok 1
    \D Karakter apa pun yang BUKAN angka \D Dalam a1b , cocok a dan b
    \s Karakter spasi: spasi, tab, baris baru dan carriage return .\s. Dalam 3 sen , cocok 3 c
    \S Setiap karakter non-whitespace \S+ Dalam 30 sen , cocok 30 dan sen
    \w Karakter kata: huruf ASCII, digit, atau garis bawah apa pun \w+ Dalam 5_cats*** , cocok 5_cats
    \W Setiap karakter yang BUKAN karakter alfanumerik atau garis bawah \W+ Dalam 5_cats*** , cocok ***
    \t Tab
    \n Baris baru \n\d+ Dalam string dua baris di bawah ini, cocok dengan 10

    5 kucing

    10 ekor anjing

    \ Meloloskan makna khusus dari suatu karakter, sehingga Anda dapat mencarinya \.

    \w+\.

    Meloloskan titik sehingga Anda dapat menemukan karakter "." literal dalam sebuah string

    Mr. , Nyonya. , Prof.

    Kelas karakter

    Dengan menggunakan pola-pola ini, Anda dapat mencocokkan elemen-elemen dari set karakter yang berbeda.

    Pola Deskripsi Contoh Cocok
    [karakter] Mencocokkan karakter tunggal apa pun dalam tanda kurung d[oi]g anjing dan gali
    [^characters] Mencocokkan karakter tunggal apa pun yang TIDAK ada di dalam tanda kurung d[^oi]g Cocok dag, dug , d1g

    Tidak cocok anjing dan gali

    [dari-ke] Mencocokkan karakter apa pun dalam rentang di antara tanda kurung [0-9]

    [a-z]

    [A-Z]

    Angka tunggal apa pun dari 0 hingga 9

    Setiap huruf kecil tunggal

    Setiap huruf besar tunggal

    Pengukur

    Quantifier adalah ekspresi khusus yang menentukan jumlah karakter yang akan dicocokkan. Quantifier selalu berlaku untuk karakter sebelumnya.

    Pola Deskripsi Contoh Cocok
    * Nol atau lebih kejadian 1a* 1, 1a , 1Aa, 1Aa dll.
    + Satu atau lebih kejadian po+ Dalam pot , cocok po

    Dalam miskin , cocok poo

    ? Nol atau satu kejadian roa?d jalan, batang
    *? Nol atau lebih kejadian, tetapi sesedikit mungkin 1a*? Dalam 1a , 1A dan 1aaa , cocok 1a
    +? Satu atau lebih kejadian, tetapi sesedikit mungkin po+? Dalam pot dan miskin , cocok po
    ?? Nol atau satu kejadian, tetapi sesedikit mungkin roa??? Dalam jalan raya dan batang , cocok ro
    {n} Mencocokkan pola sebelumnya sebanyak n kali \d{3} Tepat 3 digit
    {n,} Mencocokkan pola sebelumnya sebanyak n kali atau lebih \d{3,} 3 digit atau lebih
    {n,m} Mencocokkan pola sebelumnya antara n dan m kali \d{3,5} Dari 3 hingga 5 digit

    Pengelompokan

    Konstruksi pengelompokan digunakan untuk menangkap substring dari string sumber, sehingga Anda dapat melakukan beberapa operasi dengannya.

    Sintaksis Deskripsi Contoh Cocok
    (pola) Capturing group: menangkap substring yang cocok dan memberikannya nomor urut (\d+) Dalam 5 kucing dan 10 anjing , menangkap 5 (kelompok 1) dan 10 (kelompok 2)
    (?:pola) Non-capturing group: cocok dengan grup tetapi tidak menangkapnya (\d+) (?: anjing) Dalam 5 kucing dan 10 anjing , menangkap 10
    \1 Isi kelompok 1 (\d+)\+(\d+)=\2\+\1 Cocokkan 5+10=10+5 dan menangkap 5 dan 10 yang berada dalam kelompok penangkap
    \2 Isi kelompok 2

    Jangkar

    Jangkar menentukan posisi dalam string input tempat mencari kecocokan.

    Jangkar Deskripsi Contoh Cocok
    ^ Awal dari string

    Catatan: [^dalam kurung] berarti "tidak"

    ^\d+ Sejumlah digit di awal string.

    Dalam 5 kucing dan 10 anjing , cocok 5

    $ Akhir dari string \d+$ Sejumlah digit di akhir string.

    Dalam 10 ditambah 5 menghasilkan 15 , cocok dengan 15

    \b Batas kata \bjoy\b Cocok kegembiraan sebagai kata terpisah, tetapi tidak dalam menyenangkan .
    \B BUKAN batas kata \Bjoy\B Cocok kegembiraan di menyenangkan tetapi bukan sebagai kata yang terpisah.

    Konstruksi pergantian (OR)

    Operan pergantian mengaktifkan logika OR, sehingga Anda bisa mencocokkan elemen ini atau itu.

    Membangun Deskripsi Contoh Cocok
    Mencocokkan elemen tunggal apa pun yang dipisahkan oleh bilah vertikal (s Dalam dia menjual kerang laut, cocok menjual dan kerang

    Lihat-lihat

    Lookaround constructs sangat membantu ketika Anda ingin mencocokkan sesuatu yang diikuti atau tidak diikuti atau didahului oleh sesuatu yang lain. Ekspresi ini kadang-kadang disebut "zero-width assertions" atau "zero-width match" karena mereka mencocokkan posisi daripada karakter yang sebenarnya.

    Catatan. Dalam rasa VBA RegEx, lookbehinds tidak didukung.

    Pola Deskripsi Contoh Cocok
    (?=) Pandangan ke depan yang positif X(? = Y) Mencocokkan ekspresi X ketika diikuti oleh Y (yaitu, jika ada Y di depan X)
    (?!) Pandangan ke depan yang negatif X (?!Y) Mencocokkan ekspresi X jika TIDAK diikuti oleh Y
    (?<=) Pandangan positif di belakang (?<=Y)X Mencocokkan ekspresi X ketika didahului oleh Y (yaitu, jika ada Y di belakang X)
    (? )</td Pandangan negatif di belakang (? Y)X</td Mencocokkan ekspresi X ketika TIDAK didahului oleh Y

    Sekarang setelah Anda mengetahui hal-hal penting, mari kita beralih ke bagian yang paling menarik - menggunakan regex pada data nyata untuk mengurai string dan menemukan informasi yang diperlukan. Jika Anda memerlukan detail lebih lanjut tentang sintaksis, panduan Microsoft tentang Regular Expression Language mungkin terbukti bermanfaat.

    Fungsi RegEx khusus untuk Excel

    Seperti yang telah disebutkan, Microsoft Excel tidak memiliki fungsi RegEx bawaan. Untuk mengaktifkan ekspresi reguler, kami telah membuat tiga fungsi VBA kustom (alias fungsi yang ditentukan pengguna). Anda dapat menyalin kode dari halaman yang ditautkan di bawah ini atau dari buku kerja sampel kami, lalu menempelkannya di file Excel Anda sendiri.

    Cara kerja fungsi VBA RegExp

    Bagian ini menjelaskan mekanisme bagian dalam dan mungkin menarik bagi mereka yang ingin mengetahui secara persis apa yang terjadi di backend.

    Untuk mulai menggunakan ekspresi reguler di VBA, Anda perlu mengaktifkan pustaka referensi objek RegEx atau menggunakan fungsi CreateObject. Untuk menghemat masalah pengaturan referensi di editor VBA, kami memilih pendekatan terakhir.

    Objek RegExp memiliki 4 properti:

    • Pola - adalah pola untuk mencocokkan dalam string input.
    • Global - mengontrol apakah akan menemukan semua kecocokan dalam string input atau hanya yang pertama. Dalam fungsi kami, ini disetel ke True untuk mendapatkan semua pertandingan .
    • MultiLine - menentukan apakah akan mencocokkan pola di seluruh jeda baris dalam string multi-baris atau hanya di baris pertama. Dalam kode kami, ini disetel ke True untuk mencari di setiap baris .
    • AbaikanKasus - mendefinisikan apakah ekspresi reguler bersifat case-sensitive (default) atau case-insensitive (disetel ke True). Dalam kasus kami, itu tergantung pada bagaimana Anda mengkonfigurasi opsional match_case Secara default, semua fungsi adalah peka huruf besar-kecil .

    Keterbatasan VBA RegExp

    Excel VBA mengimplementasikan pola regex yang penting, tetapi tidak memiliki banyak fitur canggih yang tersedia di .NET, Perl, Java, dan mesin regex lainnya. Misalnya, VBA RegExp tidak mendukung pengubah sebaris seperti (?i) untuk pencocokan kasus-tidak sensitif atau (?m) untuk mode multi-baris, lookbehinds, kelas POSIX, dan lain-lain.

    Fungsi Pencocokan Regex Excel

    The RegExpMatch fungsi mencari string input untuk teks yang cocok dengan ekspresi reguler dan mengembalikan TRUE jika ditemukan kecocokan, FALSE jika tidak.

    RegExpMatch(teks, pola, [match_case])

    Di mana:

    • Teks (wajib) - satu atau lebih string untuk dicari.
    • Pola (wajib) - ekspresi reguler yang akan dicocokkan.
    • Match_case (opsional) - tipe kecocokan. TRUE atau dihilangkan - case-sensitive; FALSE - case-insensitive

    Kode fungsi ada di sini.

    Contoh: cara menggunakan regular expressions untuk mencocokkan string

    Dalam dataset di bawah ini, misalkan Anda ingin mengidentifikasi entri yang berisi kode SKU.

    Mengingat bahwa setiap SKU dimulai dengan 2 huruf kapital, diikuti dengan tanda hubung, diikuti dengan 4 digit, Anda dapat mencocokkannya dengan menggunakan ekspresi berikut.

    Pola : \b[A-Z]{2}-\d{4}\b

    Di mana [A-Z]{2} berarti 2 huruf besar apa pun dari A hingga Z dan \d{4} berarti 4 digit apa pun dari 0 hingga 9. Batas kata \b menunjukkan bahwa SKU adalah kata terpisah dan bukan bagian dari string yang lebih besar.

    Dengan pola yang telah ditetapkan, mulailah mengetik rumus seperti yang biasa Anda lakukan, dan nama fungsi akan muncul dalam daftar yang disarankan oleh Excel's AutoComplete:

    Dengan mengasumsikan string asli berada di A5, rumusnya adalah sebagai berikut:

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    Untuk kenyamanan, Anda bisa memasukkan ekspresi reguler dalam sel terpisah dan menggunakan referensi absolut ($A$2) untuk pola Ini memastikan bahwa alamat sel akan tetap tidak berubah saat Anda menyalin rumus ke sel lain:

    =RegExpMatch(A5, $A$2)

    Untuk menampilkan label teks Anda sendiri alih-alih TRUE dan FALSE, sarangkan RegExpMatch dalam fungsi IF dan tentukan teks yang diinginkan dalam fungsi value_if_true dan value_if_false argumen:

    =IF(RegExpMatch(A5, $A$2), "Ya", "Tidak")

    Untuk contoh formula lainnya, silakan lihat:

    • Cara mencocokkan string menggunakan ekspresi reguler
    • Validasi Data Excel dengan regex

    Fungsi Ekstrak Regex Excel

    The RegExpExtract fungsi mencari substring yang cocok dengan ekspresi reguler dan mengekstrak semua kecocokan atau kecocokan tertentu.

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

    Di mana:

    • Teks (wajib) - string teks yang akan dicari.
    • Pola (wajib) - ekspresi reguler yang akan dicocokkan.
    • 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 (TRUE atau dihilangkan) atau mengabaikan (FALSE) kasus teks.

    Anda bisa mendapatkan kode fungsi di sini.

    Contoh: cara mengekstrak string menggunakan ekspresi reguler

    Mengambil contoh kita sedikit lebih jauh, mari kita mengekstrak nomor faktur. Untuk ini, kita akan menggunakan regex yang sangat sederhana yang cocok dengan angka 7 digit apa pun:

    Pola : \b\d{7}\b

    Letakkan pola di A2 dan Anda akan menyelesaikan pekerjaan dengan formula yang ringkas dan elegan ini:

    =RegExpExtract(A5, $A$2)

    Jika pola cocok, rumus mengekstrak nomor faktur, jika tidak ada kecocokan yang ditemukan - tidak ada yang dikembalikan.

    Untuk contoh lainnya, silakan lihat: Cara mengekstrak string di Excel menggunakan regex.

    Fungsi Ganti Regex Excel

    The RegExpReplace menggantikan nilai yang cocok dengan regex dengan teks yang Anda tentukan.

    RegExpReplace(teks, pola, penggantian, [instance_num], [match_case])

    Di mana:

    • Teks (wajib) - string teks yang akan dicari.
    • Pola (wajib) - ekspresi reguler yang akan dicocokkan.
    • Penggantian (wajib) - teks untuk mengganti substring yang cocok.
    • Instance_num (opsional) - instance yang akan diganti. Defaultnya adalah "all matches".
    • Match_case (opsional) - mengontrol apakah akan mencocokkan (TRUE atau dihilangkan) atau mengabaikan (FALSE) kasus teks.

    Kode fungsi tersedia di sini.

    Contoh: cara mengganti atau menghapus string menggunakan regexes

    Beberapa catatan kami berisi nomor kartu kredit. Informasi ini bersifat rahasia, dan Anda mungkin ingin menggantinya dengan sesuatu atau menghapusnya sama sekali. Kedua tugas tersebut dapat diselesaikan dengan bantuan aplikasi RegExpReplace Bagaimana caranya? Dalam skenario kedua, kita akan mengganti dengan string kosong.

    Dalam tabel contoh kita, semua nomor kartu memiliki 16 digit, yang ditulis dalam 4 kelompok yang dipisahkan dengan spasi. Untuk menemukannya, kita mereplikasi pola menggunakan ekspresi reguler ini:

    Pola : \b\d{4} \d{4} \d{4} \d{4}\b

    Untuk penggantian, string berikut digunakan:

    Penggantian : XXXX XXXX XXXX XXXX XXXX

    Dan inilah rumus lengkap untuk ganti nomor kartu kredit dengan informasi yang tidak sensitif:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")

    Dengan regex dan teks pengganti di sel terpisah (A2 dan B2), rumusnya bekerja sama baiknya:

    Di Excel, "menghapus" adalah kasus khusus dari "mengganti". Untuk hapus nomor kartu kredit, cukup gunakan string kosong ("") untuk penggantian argumen:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")

    Tip. Untuk menghilangkan baris kosong dalam hasil, Anda dapat menggunakan fungsi RegExpReplace lain seperti yang ditunjukkan dalam contoh ini: Cara menghapus baris kosong menggunakan regex.

    Untuk informasi selengkapnya, silakan lihat:

    • Cara mengganti string di Excel menggunakan regex
    • Cara menghapus string menggunakan regex
    • Cara menghapus spasi menggunakan regex

    Alat Regex untuk mencocokkan, mengekstrak, mengganti, dan menghapus substring

    Pengguna Ultimate Suite kami bisa mendapatkan semua kekuatan ekspresi reguler tanpa memasukkan satu baris kode pun di buku kerja mereka. Semua kode yang diperlukan ditulis oleh pengembang kami dan diintegrasikan dengan mulus di Excel Anda selama penginstalan.

    Tidak seperti fungsi VBA yang dibahas di atas, fungsi Ultimate Suite berbasis .NET, yang memberikan dua keuntungan utama:

    1. Anda dapat menggunakan ekspresi reguler di buku kerja .xlsx normal tanpa menambahkan kode VBA apa pun dan harus menyimpannya sebagai file yang mendukung makro.
    2. NET Regex mendukung ekspresi reguler klasik berfitur lengkap, yang memungkinkan Anda membuat pola yang lebih canggih.

    Cara menggunakan Regex di Excel

    Dengan Ultimate Suite terinstal, menggunakan ekspresi reguler di Excel semudah dua langkah ini:

    1. Pada Data Ablebits tab, di tab Teks kelompok, klik Alat Regex .

    2. Pada Alat Regex panel, lakukan yang berikut ini:
      • Pilih sumber data.
      • Masukkan pola regex Anda.
      • Pilih opsi yang diinginkan: Cocok , Ekstrak , Hapus atau Ganti .
      • Untuk mendapatkan hasilnya sebagai formula dan bukan nilai, pilih tombol Sisipkan sebagai formula kotak centang.
      • Tekan tombol aksi.

      Misalnya, untuk menghapus nomor kartu kredit dari sel A2: A6, kami mengonfigurasi pengaturan ini:

    Dalam sekejap, fungsi AblebitsRegex akan disisipkan di kolom baru di sebelah kanan data asli Anda. Dalam kasus kami, rumusnya adalah:

    =AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")

    Setelah formula ada di sana, Anda bisa mengedit, menyalin atau memindahkannya seperti formula asli lainnya.

    Cara menyisipkan rumus Regex secara langsung dalam sel

    Fungsi AblebitsRegex juga dapat disisipkan langsung ke dalam sel tanpa menggunakan antarmuka add-in. Begini caranya:

    1. Klik fx pada bilah rumus atau Fungsi Sisipkan pada Rumus tab.
    2. Dalam Fungsi Sisipkan kotak dialog, pilih AblebitsUDFs kategori, pilih fungsi yang diinginkan, dan klik OK.

    3. Tentukan argumen fungsi seperti yang biasa Anda lakukan dan klik OK. Selesai!

    Untuk informasi lebih lanjut, silakan lihat Alat Regex untuk Excel.

    Itulah cara menggunakan ekspresi reguler untuk mencocokkan, mengekstrak, mengganti, dan menghapus teks di sel Excel. Saya berterima kasih telah membaca dan berharap dapat melihat Anda di blog kami minggu depan!

    Unduhan yang tersedia

    Excel Regex - contoh rumus (file .xlsm)

    Ultimate Suite - versi percobaan (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.