Daptar eusi
Henteu tiasa ngartos naha ekspresi biasa henteu didukung dina rumus Excel? Ayeuna, aranjeunna :) Kalayan fungsi khusus urang, anjeun tiasa kalayan gampang mendakan, ngagentos, nimba sareng ngahapus senar anu cocog sareng pola anu khusus.
Saheulaanan, Excel gaduh sadayana anu anjeun peryogikeun pikeun string téks. manipulasi. Hmm… kumaha upami ekspresi biasa? Aduh, teu aya fungsi Regex anu diwangun dina Excel. Tapi euweuh nu nyebutkeun urang teu bisa nyieun sorangan :)
Naon ekspresi biasa?
A ekspresi biasa (alias regex atawa regexp ) nyaéta runtuyan karakter nu disandikeun husus nu nangtukeun pola pilarian. Nganggo pola éta, anjeun tiasa mendakan kombinasi karakter anu cocog dina senar atanapi validasi input data. Upami anjeun wawuh sareng notasi wildcard, anjeun tiasa nganggap regexes salaku versi canggih tina wildcard.
Ekspresi reguler gaduh sintaksis sorangan anu diwangun ku karakter khusus, operator, sareng konstruksi. Contona, [0-5] cocog jeung sagala angka tunggal ti 0 nepi ka 5.
Ekspresi biasa digunakeun dina loba basa program kaasup JavaScript jeung VBA. Anu terakhir ngagaduhan obyék RegExp khusus, anu bakal kami gunakeun pikeun nyiptakeun pungsi khusus.
Naha Excel ngadukung regex?
Hanjakalna, henteu aya fungsi Regex inbuilt dina Excel. Pikeun tiasa nganggo éksprési biasa dina rumus anjeun, anjeun kedah nyiptakeun fungsi anu ditetepkeun ku pangguna anjeun (VBA).argumen:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
Pikeun conto rumus nu leuwih lengkep, mangga tingali:
- Kumaha cara nyocogkeun string maké ekspresi biasa
- Validasi Data Excel nganggo regexes
Fungsi Ekstrak Regex Excel
Pungsi RegExpExtract milarian substrings anu cocog sareng ekspresi biasa sareng nimba sadaya patandingan atanapi cocok husus.
RegExpExtract(téks, pola, [instance_num], [match_case])Dimana:
- Téks (diperlukeun) - string téks pikeun néangan di.
- Pola (diperlukeun) - ekspresi biasa pikeun cocog.
- Instance_num (opsional) - nomer séri anu nuduhkeun instansi mana sari. Upami disingkahkeun, mulangkeun sadaya patandingan anu kapendak (standar).
- Match_case (opsional) - nangtukeun naha cocog (BENER atanapi dileungitkeun) atanapi teu malire kasus téks (SALAH).
Anjeun tiasa nampi kodeu fungsina di dieu.
Conto: kumaha cara ngekstrak senar nganggo ekspresi biasa
Nyandak conto urang langkung jauh, hayu urang nimba nomer invoice. Pikeun ieu, urang bakal ngagunakeun regex saderhana pisan anu cocog sareng nomer 7-angka:
Pola : \b\d{7}\b
Put pola dina A2 tur Anjeun bakal meunang pakasaban rengse kalayan rumus kompak tur elegan ieu:
=RegExpExtract(A5, $A$2)
Mun pola nu cocog, rumus extracts hiji nomer invoice, lamun euweuh cocok kapanggih - teu aya nu dipulangkeun.
Pikeun conto nu leuwih lengkep, mangga tingali: Kumaha nimba string dina Excelngagunakeun regex.
Pungsi Excel Regex Ganti
Pungsi RegExpReplace ngagantikeun niléy-niléy nu cocog jeung regex jeung téks nu anjeun tangtukeun.
RegExpReplace(téks, pola, ngagantian , [instance_num], [match_case])Dimana:
- Téks (diperlukeun) - string téks pikeun néangan.
- Pola (diperlukeun) - ekspresi biasa pikeun cocog.
- Ganti (diperlukeun) - téks pikeun ngaganti substrings nu cocog jeung.
- Instance_num (opsional) - conto pikeun ngaganti. Standarna nyaéta "sadayana patandingan".
- Match_case (opsional) - ngadalikeun naha rék cocog (BENER atawa dileungitkeun) atawa malire (SALAH).
Kodeu fungsina sayogi di dieu.
Conto: kumaha cara ngagentos atanapi ngahapus string nganggo regexes
Sababaraha rékaman kami ngandung nomer kartu kiridit. Inpormasi ieu rahasia, sareng anjeun panginten hoyong ngagentos ku hal atanapi ngahapus sadayana. Kadua pancén tiasa dilaksanakeun kalayan bantosan fungsi RegExpReplace . Kumaha? Dina skenario kadua, urang bakal ngaganti ku string kosong.
Dina tabel sampel urang, sadaya nomer kartu boga 16 digit, nu ditulis dina 4 grup dipisahkeun ku spasi. Pikeun manggihan éta, urang ngayakeun réplikasi pola maké éksprési biasa ieu:
Pola : \b\d{4} \d{4} \d{4} \d{4}\ b
Pikeun ngagantian, string ieu dipaké:
Ngagantian : XXXX XXXX XXXXXXXX
Jeung ieu rumus lengkep pikeun ngaganti nomer kartu kiridit ku informasi nu teu sensitip:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
Kalayan regex jeung téks ngagantian dina sél misah ( A2 sareng B2), rumusna tiasa dianggo sami-sami:
Dina Excel, "ngahapus" mangrupikeun kasus khusus pikeun "ngaganti". Pikeun ngahapus nomer kartu kiridit, ngan ukur nganggo string kosong ("") pikeun argumen panggantian :
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
Tip. Pikeun meunangkeun rig tina garis kosong dina hasil, Anjeun bisa make fungsi RegExpReplace sejen saperti ditémbongkeun dina conto ieu: Kumaha miceun garis kosong maké regex.
Pikeun inpormasi lengkep, mangga tingali:
- Kumaha cara ngagentos senar dina Excel nganggo regex
- Kumaha carana ngahapus senar nganggo regex
- Kumaha cara ngaleungitkeun spasi bodas nganggo regexes
Alat Regex pikeun cocog, ékstrak , ngaganti jeung cabut substrings
Pamaké Suite Ultimate urang bisa meunang sagala kakuatan ekspresi biasa tanpa nyelapkeun hiji baris kode dina workbooks maranéhanana. Sadaya kode anu dipikabutuh ditulis ku pamekar urang sareng smoothy terpadu di Excel anjeun nalika instalasi.
Beda sareng fungsi VBA anu dibahas di luhur, fungsi Ultimate Suite dumasar kana .NET, anu masihan dua kauntungan utama:
- Anjeun tiasa nganggo éksprési biasa dina buku kerja .xlsx normal tanpa nambihan kode VBA sareng kedah disimpen salaku file anu diaktipkeun makro.
- Mesin Regex NET ngadukung fitur klasik anu lengkep.éksprési biasa, nu ngidinan Anjeun ngawangun pola nu leuwih canggih.
Kumaha ngagunakeun Regex dina Excel
Kalayan Ultimate Suite dipasang, ngagunakeun éksprési biasa dina Excel téh sasederhana dua léngkah ieu. :
- Dina tab Ablebits Data , dina grup Teks , klik Regex Tools .
- Dina panel Regex Tools , lakukeun ieu:
- Pilih sumber data.
- Asupkeun pola regex anjeun.
- Pilih pilihan nu dipikahoyong: Cocok , Ekstrak , Cabut atawa Ganti .
- Pikeun meunangkeun hasil salaku rumus sareng sanes nilai, pilih kotak centang Selapkeun salaku rumus .
- Pencét tombol aksi.
Contona, pikeun miceun nomer kartu kiridit tina sél. A2:A6, urang ngonpigurasikeun setelan ieu:
Sakedapan, hiji fungsi AblebitsRegex bakal diselapkeun dina kolom anyar di sisi katuhu aslina anjeun. data. Dina kasus urang, rumusna nyaéta:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
Sanggeus rumusna aya, anjeun tiasa ngédit, nyalin atanapi ngalihkeunana sapertos rumus asli.
Kumaha cara nyelapkeun rumus Regex langsung dina sél
Pungsi AblebitsRegex ogé tiasa diselapkeun langsung dina sél tanpa nganggo antarmuka tambihan. Kieu carana:
- Klik tombol fx dina palang rumus atawa Selapkeun Fungsi dina tab Rumus .
- Dina kotak dialog Insert Function , pilih AblebitsUDFs kategori, pilih pungsi nu dipikaresep, teras klik OK.
- Tetepkeun arguméntasi fungsi kawas biasana anjeun ngalakukeun teras klik OK. Réngsé!
Pikeun inpormasi nu leuwih lengkep, mangga tingali Regex Tools for Excel.
Éta cara ngagunakeun éksprési biasa pikeun nyocogkeun, ékstrak, ngaganti jeung mupus téks dina sél Excel. Abdi ngahaturkeun nuhun pikeun maca sareng ngarep-ngarep ningali anjeun dina blog kami minggu payun!
Sadia undeuran
Excel Regex - conto rumus (.xlsm file)
Ultimate Suite - versi percobaan (file .exe)
atawa .NET based) atawa masang parabot pihak katilu nu ngarojong regexes.Excel Regex cheat sheet
Naha pola regex basajan pisan atawa canggih pisan, éta diwangun maké sintaksis umum. Tutorial ieu henteu tujuanana pikeun ngajarkeun anjeun ekspresi biasa. Pikeun ieu, aya seueur sumber online, tina tutorial gratis pikeun pamula dugi ka kursus premium pikeun pangguna tingkat lanjut.
Di handap ieu kami nyayogikeun rujukan gancang kana pola RegEx utama anu bakal ngabantosan anjeun ngartos dasar-dasarna. Éta ogé tiasa dianggo salaku lembar curang anjeun nalika diajar conto salajengna.
Upami anjeun resep kana ekspresi biasa, anjeun tiasa langsung ka fungsi RegExp.
Karakter
Ieu. nyaéta pola anu paling sering dianggo pikeun cocog sareng karakter anu tangtu.
Pola | Deskripsi | Conto | Pacocokan |
. | Karakter wildcard: cocog jeung karakter tunggal iwal garis putus | .ot | titik , panas , pot , @ot |
\d | Karakter digit: mana-mana digit tunggal ti 0 nepi ka 9 | \d | Dina a1b , cocog jeung 1 |
\D | Karakter naon waé anu BUKAN angka | \D | Dina a1b , cocog sareng a sareng b |
\s | Karakter spasi bodas: spasi, tab, garis anyar jeung carriage return | .\s. | Dina 3 sen , cocog 3 c |
\S | Sakurkarakter non-spasi bodas | \S+ | Dina 30 cent , cocog 30 jeung cents |
\w | Karakter kecap: sagala hurup ASCII, angka atawa garis handap | \w+ | Dina 5_cats*** , cocog 5_ucing |
\W | Karakter naon waé anu BUKAN karakter alfanumerik atawa garis handap | \W+ | Dina 5_cats*** , cocog *** |
\t | Tab | ||
\n | Baris anyar | \n\d+ | Dina dua-baris string di handap, cocog 10 5 ucing 10 anjing |
\ | Kabur harti husus tina karakter, jadi Anjeun bisa milarianana | \. \w+\. | Kaluar tina hiji titik jadi Anjeun bisa manggihan literal "." karakter dina string Bapak , Ibu , Prof. |
Kelas karakter
Ngagunakeun pola ieu, anjeun tiasa nyocogkeun elemen tina susunan karakter anu béda.
Pola | Deskripsi | Conto | Cocok |
[karakter] | Cocok sareng karakter tunggal dina tanda kurung | d[oi]g | anjing jeung ngagali |
[^karakter] | Cocok jeung sagala karakter tunggal NOT dina kurung | d[^oi]g | Cocok dag, dug , d1g Teu cocog anjing jeung ngagali |
[ti–ka] | Cocok jeung karakter naon waé dina rentang antaratanda kurung | [0-9] [a-z] [A-Z] | Sakur digit tunggal ti 0 nepi ka 9 Sakur hurup leutik tunggal Sakur hurup badag tunggal |
Kuantifier
Quantifiers mangrupakeun éksprési husus nu nangtukeun jumlah karakter pikeun cocog. Pangukuran sok dilarapkeun ka karakter sateuacanna.
Pola | Deskripsi | Conto | Pacocokan |
* | Enol atawa leuwih kajadian | 1a* | 1, 1a , 1aa, 1aaa , jsb. |
+ | Hiji atawa leuwih kajadian | po+ | Dina pot , cocog po Di goréng , cocog poo |
? | Nol atawa hiji kajadian | roa?d | jalan, rod |
*? | Nol atanapi langkung seueur kajadian, tapi sakedik mungkin | 1a*? | Dina 1a , 1aa sareng 1aaa , cocog 1a |
+? | Hiji atawa leuwih kajadian, tapi saloba mungkin | po+? | Dina pot jeung goréng , cocog jeung po |
?? | Enol atawa hiji kajadian , tapi sakurang-kurangna | roa?? | Di jalan jeung rod , cocog jeung ro |
{n} | Cocok jeung pola saméméhna n kali | \d{3} | Persis 3 digit |
{n ,} | Cocok jeung pola saméméhna n atawa leuwih kali | \d{3,} | 3 digit atawa leuwih |
{n,m} | Cocok jeungpola saacanna antara n jeung m kali | \d{3,5} | Ti 3 nepi ka 5 digit |
Group
Konstruk pengelompokeun dipaké pikeun nangkep substring tina senar sumber, ku kituna anjeun bisa ngalakukeun sababaraha operasi jeung éta.
Sintaksis | Deskripsi | Conto | Pacocokan |
(pola) | Grup panangkep: néwak substring anu cocog jeung dibéré angka ordinal | (\d+) | Dina 5 ucing jeung 10 anjing , candak 5 (grup 1) jeung 10 (grup 2) |
(?:pattern) | Grup non-captured: cocog jeung grup tapi teu candak | (\d+)(?: anjing) | Dina 5 ucing jeung 10 anjing , candak 10 |
\1 | Eusi grup 1 | (\d+)\+(\d+)=\2\+\1 | Cocok 5+10=10+5 jeung newak 5 jeung 10 , nu keur nangkep grup |
\2 | Eusi grup 2 |
Anchors
Anchors nangtukeun posisi dina string input tempat néangan hiji patandingan.
Angkar | Pedaran | Conto | Pacocokan |
^ | Mimiti string Catetan: [^kurung jero] hartina "henteu" | ^\d+ | Sakur jumlah digit dina mimiti string. Dina 5 ucing jeung 10 anjing , cocog 5 |
$ | Tungtung string | \d+$ | Sakur jumlah digit di tungtung string. Dina 10Y |
(?<=) | Positip ka tukang | (?<=Y)X | Cocok jeung ekspresi X lamun dimimitian ku Y (nyaéta lamun aya Y di tukangeun X) |
(? | Negatip lookback | (? | Cocok jeung éksprési X lamun TEU dimimitian ku Y |
Ayeuna geus nyaho hal-hal penting, hayu urang ngaléngkah ka bagian nu paling metot - ngagunakeun regexes dina data nyata pikeun nga-parse string sareng milarian inpormasi anu diperyogikeun. Upami anjeun peryogi langkung rinci ngeunaan sintaksis, pituduh Microsoft ngeunaan Regular Expression Language tiasa ngabantosan.
Fungsi RegEx Khusus pikeun Excel
Sakumaha anu parantos disebatkeun, Microsoft Excel henteu ngagaduhan fungsi RegEx anu diwangun. Pikeun ngaktifkeun ekspresi biasa, kami parantos nyiptakeun tilu fungsi VBA khusus (alias fungsi anu ditetepkeun ku pangguna). buku kerja, teras témpélkeun kana file Excel anjeun nyalira.
Kumaha fungsi VBA RegExp tiasa dianggo
Bagian ieu ngajelaskeun mékanika batin sareng tiasa janten int eresting ka jalma anu hayang nyaho persis naon kajadian di backend.
Pikeun ngamimitian ngagunakeun ekspresi biasa di VBA, Anjeun kudu boh ngaktipkeun perpustakaan rujukan objék RegEx atawa ngagunakeun fungsi CreateObject. Pikeun nyéépkeun masalah anjeun dina netepkeun rujukan dina éditor VBA, kami milih pendekatan anu terakhir.
Objék RegExp gaduh 4 sipat:
- Pola - nyaeta pola pikeun cocog dina string input.
- Global - ngadalikeun naha manggihan sakabeh patandingan dina string input atawa ngan nu kahiji. Dina pungsi urang, éta disetel ka True pikeun meunangkeun sadayana patandingan .
- MultiLine - nangtukeun naha bakal cocog pola sakuliah garis putus dina string multi-garis atawa ukur. dina baris kahiji. Dina kode urang, disetel ka True to search dina unggal baris .
- IgnoreCase - nangtukeun naha éksprési biasa sénsitip hurup (standar) atawa case- teu peka (set ka True). Dina kasus urang, éta gumantung kana kumaha anjeun ngonpigurasikeun parameter match_case opsional. Sacara standar, sadaya pungsi sénsitip-huruf .
Watesan VBA RegExp
Excel VBA nerapkeun pola regex nu penting, tapi kurang loba fitur canggih. sadia dina .NET, Perl, Java, jeung mesin regex séjén. Contona, VBA RegExp teu ngarojong modifiers inline kayaning (?i) pikeun cocog case-insensitive atawa (?m) pikeun mode multi-garis, lookbehinds, kelas POSIX, ka sawatara ngaran.
Excel Regex Pungsi Cocog
Pungsi RegExpMatch maluruh string input pikeun téks nu cocog jeung éksprési biasa tur ngabalikeun BENER lamun kapanggih hiji patandingan, PALSU sabalikna.
RegExpMatch(téks, pola, [ match_case])Dimana:
- Teks (diperlukeun) - hiji atawa leuwih senar pikeun diteangan.
- Pola ( diperlukeun) - nu biasaekspresi pikeun cocog.
- Match_case (opsional) - tipe cocok. BENER atawa disingkahkeun - hal-sénsitip; FALSE - case-insensitive
Kode pungsi aya di dieu.
Conto: cara ngagunakeun ekspresi biasa pikeun nyocogkeun string
Dina susunan data di handap, anggap anjeun hoyong pikeun ngaidentipikasi entri nu ngandung kodeu SKU.
Kusabab unggal SKU dimimitian ku 2 hurup kapital, dituturkeun ku tanda hubung, dituturkeun ku 4 digit, anjeun bisa nyocogkeunana ngagunakeun ekspresi ieu.
Pola : \b[A-Z]{2}-\d{4}\b
Dimana [A-Z]{2} hartina 2 hurup gede ti A nepi ka Z jeung \d{4 } hartina 4 digit wae ti 0 nepi ka 9. Wates kecap \b nuduhkeun yén SKU mangrupa kecap anu misah jeung lain bagian tina senar nu leuwih gedé.
Kalayan pola nu ditetepkeun, mimitian ngetik rumus kawas biasana , sareng nami fungsi bakal muncul dina daptar anu disarankeun ku Excel AutoComplete:
Anggap string aslina dina A5, rumusna kieu:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Pikeun genah, Anjeun bisa ngasupkeun éksprési biasa dina sél nu misah jeung maké rujukan mutlak ($A$2) pikeun argumen pola t. Ieu mastikeun yén alamat sél bakal tetep teu robih nalika anjeun nyalin rumus ka sél sanés:
=RegExpMatch(A5, $A$2)
Pikeun ningalikeun labél téks anjeun nyalira tibatan BENER sareng PALSU, sarang RegExpMatch dina fungsi IF sareng tangtukeun téks nu dipikahoyong dina value_if_true jeung value_if_false tambah 5 méré 15 , cocog 15
Konstruksi alternation (OR)
Operan alternation ngaktifkeun logika OR, ku kituna anjeun bisa cocog boh unsur ieu atawa éta.
Konstruk | Pedaran | Conto | Pacocokan |