Daptar eusi
Dina senar di handap, anggap anjeun hoyong mupus nomer urutan kahiji. Sadaya angka sapertos dimimitian ku tanda hash (#) sareng ngandung persis 5 digit. Janten, urang tiasa ngaidentipikasi aranjeunna nganggo regex ieu:
Pola : #\d{5}\b
Kecap boundary \b nangtukeun yén substring anu cocog henteu tiasa bagian tina string nu leuwih gede saperti #10000001.
Pikeun mupus sakabeh patandingan, argumen instance_num teu dihartikeun:
=RegExpReplace(A5, "#\d{5}\b", "")
Pikeun ngabasmi ngan kajadian kahiji, urang nyetel instance_num argumen ka 1:
=RegExpReplace(A5, "#\d{5}\b", "", 1)
Regex pikeun miceun karakter nu tangtu
Pikeun nyabut karakter nu tangtu tina string, cukup tuliskeun sakabeh karakter nu teu dihoyongkeun jeung misahkeun eta ku bar nangtungsintaksis bébas tina watesan VBA RegExp, sareng kadua, teu kedah ngalebetkeun kode VBA dina buku kerja anjeun sabab sadaya integrasi kode dilakukeun ku kami di tukangeunana.
Bagian tugas anjeun nyaéta ngawangun ekspresi biasa sareng ngawula ka fungsina :) Hayu atuh nunjukkeun anjeun kumaha ngalakukeun éta dina conto praktis.
Kumaha carana miceun téks dina kurung jeung kurung maké regex
Dina string téks panjang, informasi kurang penting sering diapit ku [kurung] jeung (kurung). Kumaha anjeun miceun detil anu teu relevan pikeun ngajaga sadaya data sanés?
Saleresna, kami parantos ngawangun regex anu sami pikeun ngahapus tag html, nyaéta téks dina kurung sudut. Jelas, metodeu anu sami ogé tiasa dianggo pikeun kurung kuadrat sareng buleud.
Pola : (\(.*?\))
Naha anjeun kantos mikir kumaha kuatna Excel upami aya anu tiasa ngabeungharan kotak alatna ku ekspresi biasa? Kami henteu ngan ukur mikir tapi ngusahakeunana :) Sareng ayeuna, anjeun tiasa nambihan fungsi RegEx anu saé ieu kana buku kerja anjeun nyalira sareng mupus substrings anu cocog sareng pola dina waktos anu lami!
Minggu kamari, urang ningali kumaha cara ngagunakeun ekspresi biasa pikeun ngagentos senar dina Excel. Pikeun ieu, kami nyiptakeun fungsi Ganti Regex khusus. Sapertos tétéla, fungsina ngalangkungan pamakean utami sareng henteu ngan ukur tiasa ngagentos senar tapi ogé ngaleungitkeunana. Kumaha bisa kitu? Dina hal Excel, miceun hiji nilai téh lain lain ngan ngagantikeunana ku string kosong, hiji hal anu fungsi Regex urang kacida alusna!
VBA RegExp fungsi pikeun miceun substrings dina Excel
Sakumaha urang terang, ekspresi biasa henteu dirojong dina Excel sacara standar. Pikeun ngaktifkeunana, anjeun kedah nyiptakeun fungsi anu ditetepkeun ku pangguna anjeun nyalira. Warta anu saé nyaéta yén fungsi sapertos kitu parantos ditulis, diuji, sareng siap dianggo. Sadaya anu anjeun kedah laksanakeun nyaéta nyalin kode ieu, témpélkeun kana pangropéa VBA anjeun, teras simpen file anjeun janten buku kerja anu diaktipkeun makro (.xlsm).
Pungsi ieu ngagaduhan sintaksis handap:
RegExpReplace(téks, pola, ngagantian, [instance_num], [match_case])Tilu argumen kahiji diperlukeun, dua panungtungan nyaéta pilihan.
Dimana:
- Téks - string téks nu rék diteanganmungkin dugi ka mendakan kurung tutup.
Pola mana waé anu anjeun pilih, hasilna bakal sami.
Misalna, pikeun ngahapus sadaya tag html tina senar dina A5 sareng ngantepkeun téks, rumusna nyaéta:
=RegExpReplace(A5, "]*>", "")
Atawa anjeun tiasa nganggo pangukuran puguh sapertos anu dipidangkeun dina layar:
Solusi ieu tiasa dianggo sampurna pikeun téks tunggal (baris 5 - 9). Pikeun sababaraha téks (baris 10 - 12), hasilna tiasa ditaroskeun - téks tina tag anu béda dihijikeun kana hiji. Naha ieu leres atanapi henteu? Kuring sieun, éta sanés hal anu gampang diputuskeun - sadayana gumantung kana pamahaman anjeun kana hasil anu dipikahoyong. Contona, dina B11, hasil "A1" diperkirakeun; bari dina B10, Anjeun meureun hoyong "data1" jeung "data2" dipisahkeun ku spasi.
Pikeun miceun tag html jeung misahkeun téks sésana jeung spasi, anjeun bisa neruskeun ku cara kieu:
- Ganti tag ku spasi " ", lain string kosong:
=RegExpReplace(A5, "]*>", " ")
- Ngurangan sababaraha spasi jadi karakter spasi tunggal:
=RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")
- Potong spasi hareup jeung labuh:
=TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))
Hasilna bakal siga kieu:
Ablebits Regex Remove Tool
Upami anjeun ngagaduhan kasempetan ngagunakeun Suite Ultimate kami pikeun Excel, sigana anjeun parantos mendakan Alat Regex énggal anu diwanohkeun sareng rilis énggal. Kaéndahan ieu .NET dumasar fungsi Regex nyaeta aranjeunna, firstly, ngarojong pinuh-diulas ekspresi biasapilihan Hapus , teras pencét Hapus .
Pikeun meunangkeun hasil salaku rumus, lain niléy, pilih kotak centang Selapkeun salaku rumus .
Pikeun miceun téks dina kurung tina string dina A2:A5, urang ngonpigurasikeun setélan kieu:
Alhasil, fungsi AblebitsRegexRemove diselapkeun dina kolom anyar gigireun data aslina anjeun.
Pungsi éta ogé bisa diasupkeun langsung dina sél ngaliwatan kotak dialog Selapkeun Fungsi standar, dimana éta digolongkeun dina AblebitsUDFs .
Salaku AblebitsRegexRemove dirancang pikeun ngahapus téks, ngan ukur peryogi dua argumen - string sumber sareng regex. Kadua parameter tiasa dihartikeun langsung dina rumus atanapi disayogikeun dina bentuk rujukan sél. Lamun diperlukeun, pungsi custom ieu bisa dipaké babarengan jeung nu mana wae nu asli.
Contona, pikeun motong spasi tambahan dina string hasilna, Anjeun bisa ngamangpaatkeun fungsi TRIM salaku wrapper:
=TRIM(AblebitsRegexRemove(A5, $A$2))
Éta cara mupus senar dina Excel nganggo ekspresi biasa. Kuring hatur nuhun pikeun maca sareng ngarepkeun anjeun tiasa ningali anjeun dina blog kami minggu payun!
Unduh anu sayogi
Pupus string nganggo regex - conto (file .xlsm)
Ultimate Suite - versi percobaan (file .exe)
di.Pikeun inpormasi salengkepna, mangga tingali fungsi RegExpReplace.
Tip. Dina kasus saderhana, anjeun tiasa ngahapus karakter atanapi kecap khusus tina sél nganggo rumus Excel. Tapi éksprési biasa nyadiakeun leuwih loba pilihan pikeun ieu.
Kumaha carana miceun string maké éksprési biasa - conto
Salaku disebutkeun di luhur, pikeun miceun bagéan téks nu cocog pola, Anjeun kudu ngaganti eta. kalawan string kosong. Jadi, rumus generik boga bentuk kieu:
RegExpReplace(text, pattern, "", [instance_num], [match_case])Conto di handap nembongkeun rupa-rupa palaksanaan konsep dasar ieu.
Cabut kabéh patandingan atawa patandingan husus
Pungsi RegExpReplace dirancang pikeun manggihan sakabéh substrings cocog regex nu tangtu. Kajadian mana anu dipupus dikontrol ku argumen pilihan ka-4, anu dingaranan instance_num .
Defaultna nyaéta "sadayana cocog" - nalika instance_num operator concatenation (&) jeung fungsi Text saperti RIGHT, MID and LEFT.
Contona, pikeun nulis sakabéh nomer telepon dina format (123) 456-7890, rumusna nyaéta:
="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)
Dimana B5 mangrupa kaluaran fungsi RegExpReplace.
Pupus karakter husus maké regex
Dina salah sahiji tutorial urang, urang nempo kumaha carana miceun karakter nu teu dihoyongkeun dina Excel ngagunakeun inbuilt jeung fungsi custom. Babasan biasa ngajantenkeun hal-hal langkung gampang! Gantina daptar sadaya karakter pikeun dipupus, ngan tangtukeun anu anjeun hoyong jaga :)
Polana dumasar kana kelas karakter anu ditolak - karét dipasang di jero kelas karakter [^ ] pikeun cocog sagala karakter tunggal NOT dina kurung. The + quantifier maksakeun eta pikeun nganggap karakter padeukeut salaku hiji patandingan tunggal, ku kituna ngagantian dipigawé pikeun substring cocog tinimbang pikeun tiap karakter individu.
Gumantung kana kabutuhan Anjeun, pilih salah sahiji regexes handap.
Pikeun miceun non-alphanumeric karakter, nyaéta sakabéh karakter iwal hurup jeung digit:
Pola : [^0-9a-zA-Z] +
Pikeun mupus sakabeh karakter iwal hurup , angka jeung spasi :
Pola : [^0-9a-zA-Z ]+
Pikeun mupus sadaya karakter iwal hurup , angka jeung garis handap , anjeun tiasa nganggo \ W nu nangtung pikeun sagala karakter nu NOT karakter alfanumerik atawaunderscore:
Pola : \W+
Mun anjeun hoyong nyimpen sababaraha karakter sejenna , misalna. tanda baca, lebetkeun kana jero kurung.
Misalna, pikeun ngahapus karakter salian ti hurup, angka, titik, koma, atanapi spasi, pake regex ieu:
Pola : [^0-9a-zA-Z\., ]+
Ieu hasil ngaleungitkeun sakabeh karakter husus, tapi spasi bodas tambahan tetep.
Pikeun ngalereskeun ieu, anjeun tiasa nyarang pungsi di luhur kana fungsi anu sanés anu ngagentos sababaraha rohangan sareng karakter rohangan tunggal.
=RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")
Atawa ngan ukur nganggo pungsi TRIM asli sareng pangaruh anu sami. :
=TRIM(RegExpReplace(A5, $A$2, ""))
Regex pikeun miceun karakter non-numerik
Pikeun mupus sakabeh karakter non-numerik tina string, Anjeun bisa make boh rumus panjang ieu atanapi salah sahiji regexes anu saderhana pisan anu didaptarkeun di handap.
Cocokkeun karakter naon waé anu BUKAN angka:
Pola : \D+
Lepaskeun karakter non-numerik nganggo kelas anu dinegasi:
Pola : [^0-9]+
Pola : [^\d] +
Tip. Upami tujuan anjeun nyaéta pikeun ngahapus téks sareng ngabahekeun nomer sésana kana sél anu misah atanapi nempatkeun sadayana dina hiji sél anu dipisahkeun ku pembatas anu ditangtukeun, teras paké fungsi RegExpExtract sakumaha anu dijelaskeun dina Kumaha nimba nomer tina senar nganggo ekspresi biasa.
Regex pikeun miceun sagalana sanggeus spasi
Pikeun mupus sagalana sanggeus spasi, make spasi ( ) atawaspasi bodas (\s) karakter pikeun manggihan spasi munggaran tur .* pikeun cocog karakter mana wae sanggeus eta.
Upami anjeun gaduh string garis tunggal nu ngan ngandung spasi normal (nilai 32 dina sistem ASCII 7-bit) , éta henteu masalah anu mana tina regex di handap anu anjeun anggo. Dina kasus string multi-garis, éta bakal nyieun bédana.
Pikeun miceun sagalana sanggeus karakter spasi , pake regex ieu:
Pola : " .*"
=RegExpReplace(A5, " .*", "")
Rumus ieu bakal ngaleungitkeun naon waé sanggeus spasi kahiji dina unggal baris . Supados hasilna tiasa ditingalikeun leres, pastikeun ngaktipkeun Wrap Text.
Pikeun ngahapus sadayana sanggeus spasi bodas (kaasup spasi, tab, carriage return sareng baris anyar), regex nyaéta:
Pola : \s.*
=RegExpReplace(A5, "\s.*", "")
Kusabab \s cocog sababaraha tipe spasi bodas béda kaasup garis anyar (\n), rumus ieu mupus sagalana sanggeus spasi kahiji dina sél, teu paduli sabaraha garis aya di jerona.
Regex pikeun mupus téks sanggeus husus. karakter
Nganggo metode tina conto samemehna, anjeun tiasa ngabasmi téks saatos karakter naon waé anu anjeun tangtoskeun.
Pikeun nanganan unggal baris sacara misah:
Pola umum : char.*
Dina string single-line, ieu bakal ngahapus sagalana sanggeus char . Dina string multi-garis, unggal garis bakal diolah individual sabab dina rasa VBA Regex, titik (.) cocog karakter naon iwal nu anyar.ngamimitian string ^, urang cocog enol atawa leuwih karakter non-spasi [^ ]* nu langsung dituturkeun ku hiji atawa leuwih spasi "+". Bagian panungtung ditambahkeun pikeun nyegah poténsi spasi ngarah dina hasil.
Pikeun miceun téks saméméh spasi kahiji dina unggal baris, rumus ditulis dina standar "sadayana cocok" mode ( instance_num dileungitkeun):
=RegExpReplace(A5, "^[^ ]* +", "")
Pikeun mupus téks samemeh spasi kahiji dina baris kahiji, sarta ninggalkeun sakabeh garis sejenna gembleng, argumen instance_num disetel ka 1:
=RegExpReplace(A5, "^[^ ]* +", "", 1)
Regex pikeun ngahapus sadayana sateuacan karakter
Cara panggampangna pikeun mupus sadaya teks sateuacan karakter khusus nyaéta nganggo regex siga kieu:
Pola generik : ^[^char]*char
Ditarjamahkeun kana basa manusa, nyebutkeun: "ti mimiti senar anu dilabuhkeun ku ^ , cocog 0 atawa leuwih karakter iwal char [^char]* nepi ka kajadian mimiti char .
Contona, pikeun mupus sakabeh teks saméméh titik dua kahiji. , pake ekspresi biasa ieu:
Pola : ^[^:]*:
Pikeun ngahindarkeun spasi ngarah dina hasil, tambahkeun karakter spasi bodas \s* kana tungtung Ieu bakal miceun sagalana g sateuacan titik dua kahiji sareng potong spasi saatosna:
Pola : ^[^:]*:\s*
=RegExpReplace(A5, "^[^:]*:\s*", "")
Tip. Di sagigireun éksprési biasa, Excel gaduh cara sorangan pikeun ngahapus téks dumasar kana posisi atanapi pertandingan. Pikeun neuleuman kumaha carana ngalengkepan tugas kalayan rumus asli,mangga tingali Kumaha mupus téks sateuacan atanapi saatos karakter dina Excel.
Regex pikeun miceun sadayana iwal
Pikeun mupus sadaya karakter tina senar iwal ti nu Anjeun hoyong simpen, paké kelas karakter negated.
Misalna, pikeun mupus sakabéh karakter iwal hurup leutik. sareng titik-titik, regexna nyaéta:
Pola : [^a-z\.]+
Saleresna, urang tiasa ngalakukeun tanpa + quantifier di dieu sabab fungsi urang ngagentos sadayana kapanggih cocog. Quantifier ngan ngajadikeun éta rada gancang - tinimbang nanganan unggal karakter individu, anjeun ngaganti hiji substring.
=RegExpReplace(A5, "[^a-z\.]+", "")
Regex pikeun miceun tag html dina Excel
Kahiji, kudu dicatet yén HTML téh lain basa biasa, jadi parsing maké éksprési biasa teu cara pangalusna. Kitu cenah, regexes pasti bisa mantuan ngaluarkeun tag kaluar tina sél anjeun sangkan susunan data anjeun leuwih bersih.
Kusabab tag html sok disimpen dina kurung sudut , anjeun bisa manggihan eta ngagunakeun salah sahiji regexes handap.
Kelas Negated:
Pola : ]*>
Di dieu, urang cocog kurung sudut muka, dituturkeun ku enol atawa leuwih kajadian tina karakter naon waé kajaba kurung sudut nutup [^>]* nepi ka kurung sudut nutup pangdeukeutna.
Puguh pilarian:
Pola :
Di dieu, urang cocog nanaon ti mimiti bracket muka ka bracket nutup munggaran. Tanda tanya maksakeun .* pikeun cocog sababaraha karakterline.
Pikeun ngolah sakabéh garis jadi string tunggal:
Pola generik : char(.