Regex Excel-en zenbait karaktere edo testu kentzeko

  • Partekatu Hau
Michael Brown
argumentua baztertzen da, aurkitutako bat-etortze guztiak kentzen dira. Bat-etortze zehatz bat ezabatzeko, zehaztu instantzia-zenbakia.

Beheko kateetan, demagun lehen ordena-zenbakia ezabatu nahi duzula. Zenbaki horiek guztiak hash zeinuarekin hasten dira (#) eta zehazki 5 zifra dituzte. Beraz, regex hau erabiliz identifikatu ditzakegu:

Eredua : #\d{5}\b

Hitz mugak \b zehazten du bat datorren azpikate bat ezin dela izan. #10000001 bezalako kate handiago baten zati bat.

Etorkizun guztiak kentzeko, instantzia_zenbakia argumentua ez da definituta:

=TRIM(AblebitsRegexRemove(A5, $A$2))

Lehen agerraldia soilik ezabatzeko, instantzia_zenbakia argumentua 1ean ezarriko dugu:

=RegExpReplace(A5, "#\d{5}\b", "", 1)

Regex. karaktere batzuk kentzeko

Kate batetik karaktere batzuk kentzeko, idatzi nahi ez diren karaktere guztiak eta bereizi barra bertikal batekinsintaxirik gabeko VBA RegExp-en mugak, eta, bigarrenik, ez duzu VBA koderik txertatu behar zure lan-liburuetan, kode-integrazio guztia guk egiten baitugu backend-ean.

Zure lanaren zatia adierazpen erregular bat eraikitzea da eta funtzioari zerbitzatu :) Utzidazu hori nola egin adibide praktiko batean.

Nola kendu parentesi eta parentesi arteko testua regex erabiliz

Testu-kate luzeetan, informazio hain garrantzitsua [parentesi] eta (parentesi) artean sartu ohi da. Nola kendu garrantzirik gabeko xehetasun horiek gainerako datu guztiak mantenduz?

Izan ere, dagoeneko antzeko erreexektua eraiki dugu html etiketak ezabatzeko, hau da, testua parentesi angeluetan. Jakina, metodo berdinek funtzionatuko dute kortxeteetan eta biribiletan ere.

Eredua : (\(.*?\))

Inoiz pentsatu al duzu zein indartsua izango litzatekeen Excel norbaitek bere tresna-kutxa adierazpen erregularrekin aberastuko balu? Pentsatu ez ezik, lan egin dugu :) Eta orain, RegEx funtzio zoragarri hau gehi dezakezu zure lan-liburuetara eta ezabatu eredu batekin bat datozen azpikateak denbora gutxian!

Azken astean begiratu genuen. Excel-en kateak ordezkatzeko adierazpen erregularrak nola erabili. Horretarako, Regex Replace funtzio pertsonalizatu bat sortu dugu. Ikusi denez, funtzioak bere erabilera nagusitik haratago doa eta kateak ordezkatu ez ezik, kendu ere egin ditzake. Nola izan liteke hori? Excel-i dagokionez, balio bat kentzea kate huts batekin ordezkatzea besterik ez da, gure Regex funtzioa oso ona da!

VBA RegExp funtzioa Excel-en azpikateak kentzeko

Denok dakigunez, adierazpen erregularrak ez dira onartzen Excel-en lehenespenez. Horiek gaitzeko, zure erabiltzaileak definitutako funtzioa sortu behar duzu. Albiste ona da funtzio hori dagoeneko idatzia, probatua eta erabiltzeko prest dagoela. Egin behar duzun guztia kode hau kopiatu, zure VBA editorean itsatsi eta, ondoren, fitxategia makro-gaitutako lan-liburua (.xlsm) gisa gordetzea da.

Funtzioak hau du. honako sintaxia:

RegExpReplace(testua, eredua, ordezkapena, [instantzia_zenbakia], [match_case])

Lehenengo hiru argumentuak beharrezkoak dira, azken biak aukerakoak dira.

Non:

  • Testua - bilatu beharreko testu-kateaposible da itxiera parentesi bat aurkitu arte.

Aukeratzen duzun eredua edozein dela ere, emaitza guztiz berdina izango da.

Adibidez, A5-ko kate batetik html etiketa guztiak kentzeko eta testua uzteko, formula hau da:

=RegExpReplace(A5, "]*>", "")

Edo zenbatzaile alferra erabil dezakezu pantaila-argazkian erakusten den moduan:

Itenbide honek ezin hobeto funtzionatzen du. testu bakarra (5-9. errenkadak). Testu anitzetarako (10-12. errenkadak), emaitzak zalantzagarriak dira - etiketa ezberdinetako testuak bakarrean batzen dira. Hau zuzena da ala ez? Beldur naiz, ez da erraz erabaki daitekeen zerbait - dena nahi duzun emaitza ulertzearen araberakoa da. Adibidez, B11n, "A1" emaitza espero da; B10-n, berriz, baliteke "datuak1" eta "datuak2" zuriune batekin bereiztea nahi izatea.

HTML etiketak kentzeko eta gainerako testuak zuriunez bereizteko, honela jarraitu dezakezu:

  1. Ordeztu etiketak " " zuriuneekin, ez kate hutsekin:

    =RegExpReplace(A5, "]*>", " ")

  2. Murriztu hainbat zuriune zuriune bakarreko karaktere batera:

    =RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")

  3. Moztu hasierako eta amaierako espazioak:

    =TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))

Emaitza honen itxura izango du:

Ablebits Regex Remove Tool

Excel-erako gure Ultimate Suite erabiltzeko aukera izan baduzu, ziurrenik azken bertsioarekin aurkeztutako Regex tresna berriak deskubritu dituzu. .NET oinarritutako Regex funtzio hauen edertasuna da, lehenik eta behin, ezaugarri osoko adierazpen erregularrak onartzen dituztela. Kendu aukera, eta sakatu Kendu .

Emaitzak formula gisa, ez balio gisa lortzeko, hautatu Txertatu formula gisa kontrol-laukia.

A2:A5-ko kateetatik parentesi artean dagoen testua kentzeko, ezarpenak konfiguratuko ditugu. honela:

Ondorioz, AblebitsRegexRemove funtzioa zutabe berri batean txertatzen da zure jatorrizko datuen ondoan.

Funtzioa zuzenean gelaxka batean ere sar daiteke Txertatu funtzioa elkarrizketa-koadroaren bidez, non AblebitsUDFs atalean sailkatuta dagoen.

AblebitsRegexRemove testua kentzeko diseinatuta dagoenez, bi argumentu baino ez ditu behar: iturburu-katea eta regex. Bi parametroak formula batean zuzenean defini daitezke edo gelaxka-erreferentzia moduan eman daitezke. Behar izanez gero, funtzio pertsonalizatu hau jatorrizko edozeinekin batera erabil daiteke.

Adibidez, sortzen diren kateetan espazio gehigarriak mozteko, TRIM funtzioa erabil dezakezu bilgarri gisa:

=TRIM(AblebitsRegexRemove(A5, $A$2))

Horrela da Excel-en kateak ezabatu adierazpen erregularrak erabiliz. Eskerrik asko irakurtzeagatik eta datorren astean gure blogean ikustea espero dut!

Deskarga erabilgarri

Kendu kateak regex erabiliz - adibideak (.xlsm fitxategia)

Ultimate Suite - probako bertsioa (.exe fitxategia)

in.
  • Eredua - bilatu beharreko adierazpen erregularra.
  • Ordezpena - ordezkatu beharreko testua. Ereduarekin bat datozen azpikateak kentzeko, erabili kate hutsa ("") ordezkatzeko.
  • Instantzia_zenbakia (aukerakoa) - nahi duen instantzia. ordezkatu. Salbatuz gero, aurkitutako bat-etortze guztiak ordezkatzen dira (lehenetsia).
  • Match_case (aukerakoa) - balio boolearra bat etortzen den edo ez ikusiarena den testua. Maiuskulak eta minuskulak bereizteko, erabili TRUE (lehenetsia); maiuskulak eta minuskulak bereizten ez badira - GEZURRA.
  • Informazio gehiago lortzeko, ikusi RegExpReplace funtzioa.

    Aholkua. Kasu errazetan, karaktere edo hitz zehatzak kendu ditzakezu gelaxketatik Excel formulekin. Baina adierazpen erregularrek askoz aukera gehiago eskaintzen dituzte horretarako.

    Nola kendu kateak adierazpen erregularrak erabiliz - adibideak

    Goian esan bezala, eredu batekin bat datozen testu zatiak kentzeko, horiek ordezkatu behar dituzu. kate huts batekin. Beraz, formula generiko batek forma hau hartzen du:

    RegExpReplace(text, pattern, "", [instance_num], [match_case])

    Beheko adibideek oinarrizko kontzeptu honen hainbat inplementazio erakusten dituzte.

    Kendu bat-etortze guztiak edo bat-etortze espezifikoak

    RegExpReplace funtzioa arau-eskakizun batekin bat datozen azpikate guztiak aurkitzeko diseinatuta dago. Kendu beharreko agerraldiak 4. aukerako argumentuak kontrolatzen ditu, instantzia_zenbakia izenekoa.

    Lehenetsia "bat datozen guztiak" da - instantzia_zenbakia denean.kateatzeko operadorea (&) eta Testu-funtzioak, esate baterako, ESKUINA, ERDIA eta EZKER.

    Adibidez, telefono-zenbaki guztiak (123) 456-7890 formatuan idazteko, hau da formula:

    ="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)

    Non B5 RegExpReplace funtzioaren irteera den.

    Kendu karaktere bereziak regex erabiliz

    Gure tutorialetako batean, Excel-en nahi ez diren karaktereak nola ezabatu aztertu dugu integratutako eta pertsonalizatutako funtzioak erabiliz. Esamolde erregularrek gauzak asko errazten dituzte! Ezabatu beharreko karaktere guztiak zerrendatu beharrean, zehaztu mantendu nahi dituzunak :)

    Eredua ezeztaturiko karaktere klaseetan oinarritzen da - karaktere klase baten barruan karaktere bat jartzen da [^ ] parentesi artean dagoen edozein karaktere bat etortzeko. + zenbatzaileak ondoz ondoko karaktereak bat-etortze bakar gisa hartzera behartzen du, beraz, bat datorren azpikate bat ordezkatuko da karaktere bakoitzarentzat beharrean.

    Zure beharren arabera, aukeratu erregulazio hauetako bat.

    Caraktere ez-alfanumerikoen kentzeko, hau da, karaktere guztiak letrak eta digituak izan ezik:

    Eredua : [^0-9a-zA-Z] +

    Caraktere guztiak garbitzeko letrak izan ezik , digitoak eta espazioak :

    Eredua : [^0-9a-zA-Z ]+

    Caraktere guztiak ezabatzeko letrak , digitoak eta azpimarra izan ezik, \ W karaktere alfanumerikoa EZ den edozein karaktere adierazten duena edoAzpimarra:

    Eredua : \W+

    Beste karaktere batzuk mantendu nahi badituzu , adibidez. puntuazio-markak, jarri kortxeteen artean.

    Adibidez, letra, zifra, puntua, koma edo zuriunea ez den edozein karaktere kentzeko, erabili adierazpen erregular hau:

    Eredua : [^0-9a-zA-Z\., ]+

    Horrek behar bezala ezabatzen ditu karaktere berezi guztiak, baina zuriune gehigarriak geratzen dira.

    Hau konpontzeko, goiko funtzioa beste batean habia dezakezu, hainbat zuriune ordezkatzen dituen beste batean.

    =RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")

    Edo erabili jatorrizko TRIM funtzioa efektu berdinarekin. :

    =TRIM(RegExpReplace(A5, $A$2, ""))

    Regex karaktere ez-zenbakigarriak kentzeko

    Kate batetik zenbakizko karaktere guztiak ezabatzeko, erabil dezakezu formula luze hau edo behean zerrendatzen diren regexe oso sinpleetako bat.

    Lotu zifra EZ ez den edozein karaktere:

    Eredua : \D+

    Kendu zenbakizko karaktereak ezeztatutako klaseak erabiliz:

    Eredua : [^0-9]+

    Eredua : [^\d] +

    Aholkua. Zure helburua testua kentzea eta gainerako zenbakiak gelaxka bereizietan isurtzea edo denak mugatzaile zehatz batekin bereizita dagoen gelaxka batean jartzea bada, erabili RegExpExtract funtzioa Adierazpen erregularrak erabiliz zenbakiak katetik nola atera azaltzen den moduan.

    Regex zuriunearen ondoren dena kentzeko

    Zune baten ondoren dena ezabatzeko, erabili zuriunea ( ) edozuriune (\s) karakterea lehenengo zuriunea aurkitzeko eta .* ondorengo karaktere bat etortzeko.

    Zune arruntak soilik dituzten lerro bakarreko kateak badituzu (32 balioa 7 biteko ASCII sisteman) , ez du axola beheko regexeetatik zein erabiltzen duzun. Lerro anitzeko kateen kasuan, aldea eragiten du.

    Guztia kentzeko husune karaktere baten ondoren , erabili ohiko adierazpen hau:

    Eredua : " .*"

    =RegExpReplace(A5, " .*", "")

    Formula honek lerro bakoitzean lehenengo zuriunearen ondoren ezer kenduko du. Emaitzak behar bezala bistaratzeko, ziurtatu Testua biltzea aktibatuta duzula.

    Zune zuri baten ondoren dena kentzeko (espazio bat, fitxa, orga-itzulera eta lerro berria barne), adierazpen erregularra. hau da:

    Eredua : \s.*

    =RegExpReplace(A5, "\s.*", "")

    \s zuriune mota ezberdinekin bat datorrelako lerro berri batekin (\n), formula honek gelaxka bateko lehenengo zuriunearen ondoren dena ezabatzen du, berdin dio zenbat lerro dauden.

    Regex testua kentzeko zehatz baten ondoren. karakterea

    Aurreko adibideko metodoak erabiliz, zehaztutako edozein karaktereren ondoren testua ezaba dezakezu.

    Lerro bakoitza bereizita kudeatzeko:

    Eredu generikoa : char.*

    Lerro bakarreko kateetan, honek char ondorengo guztia kenduko du. Lerro anitzeko kateetan, lerro bakoitza banan-banan prozesatuko da, VBA Regex itxuran puntu bat (.) edozein karaktere bat datorrelako, berri batekin izan ezik.^ kate baten hasiera, zuriuneak ez diren zero karaktere edo gehiagorekin bat egiten dugu [^ ]*, eta berehala zuriune bat edo gehiago " +" jartzen dira. Azken zatia gehitzen da emaitzetan hasierako hutsuneak saihesteko.

    Lerro bakoitzeko lehenengo zuriunearen aurretik testua kentzeko, formula "bat-etortze guztiak" modu lehenetsian idazten da ( instantzia_zenbakia kenduta):

    =RegExpReplace(A5, "^[^ ]* +", "")

    Lehen lerroko lehenengo zuriunearen aurreko testua ezabatzeko eta gainerako lerro guztiak osorik uzteko, instantzia_zenbakia argumentua 1ean ezartzen da:

    =RegExpReplace(A5, "^[^ ]* +", "", 1)

    Regex karakterearen aurretik dena kentzeko

    Caraktere zehatz baten aurretik testu guztiak kentzeko modurik errazena regex bat erabiltzea da. honela:

    Eredu generikoa : ^[^char]*char

    Giza hizkuntza batera itzulita, honela dio: "^-k ainguratutako kate baten hasieratik , bat etortzea 0 karaktere edo gehiago char [^char]* izan ezik, char ren lehen agerraldira arte.

    Adibidez, lehenengo bi puntuen aurreko testu guztia ezabatzeko , erabili adierazpen erregular hau:

    Eredua : ^[^:]*:

    Emaitzetan hasierako zuriuneak saihesteko, gehitu \s* zuriune karakterea. amaiera. Honek dena kenduko du g lehenengo bi puntuen aurretik eta moztu zuriuneak ondoan:

    Eredua : ^[^:]*:\s*

    =RegExpReplace(A5, "^[^:]*:\s*", "")

    Aholkua. Adierazpen erregularrez gain, Excel-ek bere baliabideak ditu testua posizioaren edo bat-etortzearen arabera kentzeko. Jatorrizko formulekin zeregina nola betetzen ikasteko,mesedez, ikusi Nola kendu testua karaktere baten aurretik edo ondoren Excel-en.

    Regex dena ezabatzeko

    Kate bateko karaktere guztiak ezabatzeko gorde nahi dituzunak izan ezik, erabili ezeztatutako karaktere-klaseak.

    Adibidez, letra xeheak izan ezik karaktere guztiak kentzeko. eta puntuak, regex hau da:

    Eredua : [^a-z\.]+

    Izan ere, hemen + zenbatzailerik gabe egin genezake gure funtzioak guztiak ordezkatzen baititu partiduak aurkitu. Zenbatzaileak apur bat azkarrago egiten du - karaktere bakoitza kudeatu beharrean, azpikate bat ordezkatzen duzu.

    =RegExpReplace(A5, "[^a-z\.]+", "")

    Regex Excel-en html etiketak kentzeko.

    Lehenik eta behin, kontuan izan behar da HTML ez dela hizkuntza arrunt bat, beraz, esamolde erregularrak erabiliz analizatzea ez da modurik onena. Hori bai, arau erregularrek zure zeluletatik etiketak kentzen lagunduko dizute datu-multzoa garbiagoa izan dadin.

    Html etiketak beti parentesi angeluetan jartzen direla kontuan izanda, ondoko adierazpen erregular hauetako bat erabiliz aurki ditzakezu.

    Klase ezeztatua:

    Eredua : ]*>

    Hemen, irekiera-angeluaren parentesi batekin bat egiten dugu, eta jarraian, karakterearen zero edo gehiago agerraldiekin bat egiten dugu. ixteko angeluaren parentesi [^>]* hurbileneko ixteko angeluaren parentesiraino.

    Bilaketa alferra:

    Eredua :

    Hemen, bat egiten dugu edozer gauza irekitzeko lehenengo parentesitik lehen itxieraraino. Galdera ikurrak .* adina karaktere bat etortzera behartzen duline.

    Lerro guztiak kate bakar gisa prozesatzeko:

    Eredu generikoa : char(.

    Michael Brown teknologia-zale dedikatua da, software-tresnak erabiliz prozesu konplexuak sinplifikatzeko grina duena. Hamarkada bat baino gehiagoko esperientzia duen teknologia-industrian, Microsoft Excel eta Outlook-en eta Google Sheets eta Docs-en trebetasunak landu ditu. Michael-en bloga bere ezagutzak eta esperientziak besteekin partekatzera zuzenduta dago, produktibitatea eta eraginkortasuna hobetzeko aholku eta tutorial errazak eskaintzen ditu. Profesional ondua edo hasiberria izan, Michael-en blogak informazio baliotsuak eta aholku praktikoak eskaintzen ditu funtsezko software-tresna horiei etekinik handiena ateratzeko.