Regex til að fjarlægja ákveðna stafi eða texta í Excel

  • Deildu Þessu
Michael Brown
rökum er sleppt, allar fundnar samsvörun eru fjarlægðar. Til að eyða tiltekinni samsvörun, skilgreindu tilviksnúmerið.

Í strengjunum hér að neðan, segjum að þú viljir eyða fyrsta pöntunarnúmerinu. Allar slíkar tölur byrja á kjötkássamerkinu (#) og innihalda nákvæmlega 5 tölustafi. Þannig að við getum auðkennt þau með því að nota þetta regex:

Mynstur : #\d{5}\b

Orðið mörk \b tilgreinir að samsvarandi undirstrengur geti ekki verið hluti af stærri streng eins og #10000001.

Til að fjarlægja allar samsvörun er instance_num rökin ekki skilgreind:

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

Til að uppræta aðeins fyrsta tilvikið setjum við tilviksnúmer röksemdin á 1:

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

Regex til að fjarlægja ákveðna stafi

Til að fjarlægja ákveðna stafi af streng skaltu bara skrifa niður alla óæskilega stafi og skilja þá að með lóðréttri striksetningafræði laus við VBA RegExp takmarkanir, og í öðru lagi þarf ekki að setja neinn VBA kóða inn í vinnubækurnar þínar þar sem öll kóðasamþætting er unnin af okkur í bakendanum.

Þinn hluti af starfinu er að smíða reglulega tjáningu og þjóna aðgerðinni :) Leyfðu mér að sýna þér hvernig á að gera það í hagnýtu dæmi.

Hvernig á að fjarlægja texta innan sviga og sviga með því að nota regex

Í löngum textastrengjum, minna mikilvægar upplýsingar er oft innan [sviga] og (sviga). Hvernig fjarlægir þú þessar óviðkomandi upplýsingar og geymir öll önnur gögn?

Í raun höfum við þegar byggt upp svipaða regex til að eyða html merkjum, þ.e. texta innan hornklofa. Augljóslega munu sömu aðferðir virka fyrir ferkantaða og hringlaga sviga líka.

Mynstur : (\(.*?\))

Hefurðu einhvern tíma hugsað um hversu öflugt Excel væri ef einhver gæti auðgað verkfærakistuna með reglulegum tjáningum? Við höfum ekki aðeins hugsað heldur unnið að því :) Og nú geturðu bætt þessari frábæru RegEx aðgerð við þínar eigin vinnubækur og þurrkað út undirstrengi sem passa við mynstur á skömmum tíma!

Í síðustu viku skoðuðum við hvernig á að nota reglulega segð til að skipta um strengi í Excel. Fyrir þetta bjuggum við til sérsniðna Regex Replace aðgerð. Eins og það kom í ljós fer aðgerðin út fyrir aðalnotkun sína og getur ekki aðeins skipt um strengi heldur einnig fjarlægt þá. Hvernig gat það verið? Hvað varðar Excel, þá er ekkert annað að fjarlægja gildi en að skipta því út fyrir tóman streng, eitthvað sem Regex fallið okkar er mjög gott í!

VBA RegExp fall til að fjarlægja undirstrengi í Excel

Eins og við vitum öll eru venjulegar segðir ekki studdar í Excel sjálfgefið. Til að virkja þá þarftu að búa til þína eigin notendaskilgreinda aðgerð. Góðu fréttirnar eru þær að slík aðgerð er þegar skrifuð, prófuð og tilbúin til notkunar. Allt sem þú þarft að gera er að afrita þennan kóða, líma hann inn í VBA ritilinn þinn og vista síðan skrána þína sem macro-virkjað vinnubók (.xlsm).

aðgerðin hefur eftirfarandi setningafræði:

RegExpReplace(texti, mynstur, skipti, [tilvik_númer], [samsvörun_tilfelli])

Fyrstu þrjár rökin eru nauðsynlegar, síðustu tvær eru valfrjálsar.

Hvar:

  • Texti - textastrengurinn til að leitamögulegt þar til það finnur lokakrappi.

Hvaða mynstur sem þú velur verður útkoman algjörlega sú sama.

Til dæmis, til að fjarlægja öll html merki úr streng í A5 og skilja eftir texta, formúlan er:

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

Eða þú getur notað lazy quantifier eins og sýnt er á skjámyndinni:

Þessi lausn virkar fullkomlega fyrir einn texti (línur 5 - 9). Fyrir marga texta (línur 10 - 12) eru niðurstöðurnar vafasamar - textar frá mismunandi merkjum eru sameinaðir í eitt. Er þetta rétt eða ekki? Ég er hræddur um að þetta sé ekki eitthvað sem auðvelt er að ákveða - allt veltur á skilningi þínum á tilætluðum árangri. Til dæmis, í B11 er gert ráð fyrir niðurstöðunni "A1"; en í B10 gætirðu viljað að "data1" og "data2" séu aðskilin með bili.

Til að fjarlægja html merki og aðgreina textann sem eftir er með bilum, geturðu haldið áfram á þennan hátt:

  1. Skiptu út merkjum fyrir bil " ", ekki tóma strengi:

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

  2. Fækkaðu mörg bil í einn bilstaf:

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

  3. Snyrtu fremstu og aftandi rými:

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

Niðurstaðan mun líta eitthvað svona út:

Ablebits Regex Remove Tool

Ef þú hefur fengið tækifæri til að nota Ultimate Suite fyrir Excel, hefurðu líklega þegar uppgötvað nýju Regex Tools sem kynnt var með nýlegri útgáfu. Fegurðin við þessar .NET byggðar Regex aðgerðir er að þær styðja í fyrsta lagi fullkomna reglubundna tjáninguvalkostinn Fjarlægja og ýttu á Fjarlægja .

Til að fá niðurstöðurnar sem formúlur, ekki gildi, veljið gátreitinn Setja inn sem formúla .

Til að fjarlægja texta innan sviga úr strengjum í A2:A5, stillum við stillingarnar sem hér segir:

Í kjölfarið er AblebitsRegexRemove aðgerðin sett inn í nýjan dálk við hlið upprunalegu gagnanna.

Einnig er hægt að slá aðgerðina beint inn í reit í gegnum venjulegan Insert Function valmynd, þar sem hún er flokkuð undir AblebitsUDFs .

Þar sem AblebitsRegexRemove er hannað til að fjarlægja texta, þá þarf það aðeins tvö rök - upprunastrenginn og regex. Hægt er að skilgreina báðar færibreyturnar beint í formúlu eða fá þær í formi frumatilvísana. Ef þörf krefur er hægt að nota þessa sérsniðnu aðgerð ásamt hvaða innfæddu.

Til dæmis, til að klippa aukabil í strengjunum sem myndast, geturðu notað TRIM aðgerðina sem umbúðir:

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

Svona á að fjarlægja strengi í Excel með því að nota regluleg segð. Ég þakka þér fyrir lesturinn og hlakka til að sjá þig á blogginu okkar í næstu viku!

Lagt niðurhal

Fjarlægðu strengi með regex - dæmi (.xlsm skrá)

Ultimate Suite - prufuútgáfa (.exe skrá)

in.
  • Mynstur - regluleg segð til að leita að.
  • Replacement - textinn sem á að skipta út fyrir. Til að fjarlægja undirstrengi sem passa við mynstrið, notaðu tóman streng ("") til að skipta út.
  • Tilvik_númer (valfrjálst) - tilvikið til að skipta um. Ef því er sleppt er öllum fundnum samsvörunum skipt út (sjálfgefið).
  • Passunarfall (valfrjálst) - Boolean gildi sem gefur til kynna hvort passa eigi við eða hunsa stóra og stóra texta. Notaðu TRUE (sjálfgefið); fyrir hástafa-óviðkvæmt - FALSE.
  • Nánari upplýsingar er að finna í RegExpReplace aðgerðina.

    Ábending. Í einföldum tilfellum er hægt að fjarlægja tiltekna stafi eða orð úr frumum með Excel formúlum. En reglulegar segðir bjóða upp á miklu fleiri valkosti fyrir þetta.

    Hvernig á að fjarlægja strengi með því að nota regluleg segð - dæmi

    Eins og getið er hér að ofan, til að fjarlægja hluta af texta sem passa við mynstur, þarftu að skipta þeim út með tómum streng. Svo, almenn formúla tekur þessa mynd:

    RegExpReplace(texti, mynstur, "", [tilvik_númer], [passa_fall])

    Dæmin hér að neðan sýna ýmsar útfærslur á þessu grunnhugtaki.

    Fjarlægja allar samsvörun eða ákveðin samsvörun

    RegExpReplace aðgerðin er hönnuð til að finna alla undirstrengi sem passa við tiltekið regex. Hvaða tilvik sem á að fjarlægja er stjórnað af 4. valkvæða frumbreytu, sem heitir tilviksnúmer .

    Sjálfgefið er "allar passa" - þegar tilvik_númer samtengingartæki (&) og textaaðgerðir eins og HÆGRI, MÍÐJA og VINSTRI.

    Til dæmis, til að skrifa öll símanúmer á (123) 456-7890 sniði, er formúlan:

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

    Þar sem B5 er úttak RegExpReplace fallsins.

    Fjarlægðu sérstafi með því að nota regex

    Í einni af námskeiðunum okkar, við skoðuðum hvernig á að fjarlægja óæskilega stafi í Excel með innbyggðum og sérsniðnum aðgerðum. Regluleg tjáning gerir hlutina miklu auðveldari! Í stað þess að skrá alla stafi sem á að eyða, tilgreindu bara þá sem þú vilt halda :)

    Mynstrið er byggt á neiknuðum stafaflokkum - merki er sett inn í stafaflokk [^ ] til að passa við einhvern stakan staf EKKI í sviga. + magnið neyðir það til að líta á samfellda stafi sem eina samsvörun, þannig að skipt er út fyrir samsvarandi undirstreng frekar en fyrir hvern einstakan staf.

    Veldu eina af eftirfarandi regexes, allt eftir þörfum þínum.

    Til að fjarlægja ekki tölustafi stafi, þ.e.a.s. alla stafi nema bókstafi og tölustafi:

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

    Til að hreinsa alla stafi nema stafi , stafir og bil :

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

    Til að eyða öllum stöfum nema stöfum , stöfum og undirstrik geturðu notað \ W sem stendur fyrir hvaða staf sem er EKKI tölustafur eðaundirstrik:

    Mynstur : \W+

    Ef þú vilt halda einhverjum öðrum stöfum , t.d. greinarmerki, settu þau innan sviga.

    Til dæmis, til að fjarlægja hvaða staf sem er annar en bókstaf, tölustaf, punkt, kommu eða bil skaltu nota eftirfarandi regex:

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

    Þetta eyðir öllum sértáknum með góðum árangri, en auka bil er eftir.

    Til að laga þetta geturðu hreiðrað ofangreinda aðgerð inn í aðra sem kemur í stað margra bila fyrir einn bilstaf.

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

    Eða notaðu bara innfædda TRIM aðgerðina með sömu áhrifum :

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

    Regex til að fjarlægja stafi sem ekki eru tölustafir

    Til að eyða öllum stöfum sem ekki eru tölustafir úr streng geturðu notað annað hvort þessi langa formúla eða ein af mjög einföldu regexesunum sem taldar eru upp hér að neðan.

    Passaðu við hvaða staf sem er EKKI tölustafur:

    Mynstur : \D+

    Taktu ekki tölustafi með því að nota neita flokka:

    Mynstur : [^0-9]+

    Mynstur : [^\d] +

    Ábending. Ef markmið þitt er að fjarlægja texta og hella þeim tölum sem eftir eru í aðskildar reiti eða setja þær allar í einn reit aðskilinn með tilteknu afmörkun, notaðu þá RegExpExtract aðgerðina eins og útskýrt er í Hvernig á að draga tölur úr streng með reglulegum segðum.

    Regex til að fjarlægja allt eftir bil

    Til að þurrka út allt eftir bil, notaðu annað hvort bilið ( ) eðahvítt bil (\s) staf til að finna fyrsta bilið og .* til að passa við hvaða stafi sem er á eftir því.

    Ef þú ert með einlínu strengi sem innihalda aðeins venjuleg bil (gildi 32 í 7-bita ASCII kerfinu) , það skiptir í raun ekki máli hvaða af neðangreindum regexes þú notar. Ef um er að ræða marglínu strengi, þá skiptir það máli.

    Til að fjarlægja allt eftir bilstaf skaltu nota þetta regex:

    Mynstur : " .*"

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

    Þessi formúla mun fjarlægja allt á eftir fyrsta bilinu í hverri línu . Til að niðurstöðurnar birtist rétt, vertu viss um að kveikja á Wrap Text.

    Til að fjarlægja allt eftir bili (þar á meðal bil, flipa, vagnsskil og nýja línu), er regin er:

    Mynstur : \s.*

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

    Vegna þess að \s passar við nokkrar mismunandi gerðir hvítra bila þar á meðal nýja línu (\n), þessi formúla eyðir öllu eftir fyrsta bilið í hólfinu, sama hversu margar línur eru í því.

    Regex til að fjarlægja texta eftir ákveðinn staf

    Með því að nota aðferðirnar frá fyrra dæmi geturðu eytt texta á eftir hvaða staf sem þú tilgreinir.

    Til að meðhöndla hverja línu fyrir sig:

    Almennt mynstur : char.*

    Í einlínu strengjum mun þetta fjarlægja allt eftir char . Í marglínu strengjum verður hver lína unnin fyrir sig vegna þess að í VBA Regex bragðinu passar punktur (.) við hvaða staf sem er nema nýrupphaf strengs ^, pössum við núll eða fleiri stafi sem ekki eru bil [^ ]* sem er strax fylgt eftir af einu eða fleiri bilum " +". Síðasta hlutanum er bætt við til að koma í veg fyrir hugsanleg fremstu bil í niðurstöðunum.

    Til að fjarlægja texta á undan fyrsta bili í hverri línu er formúlan skrifuð í sjálfgefna "allar samsvörun" ham ( tilvik_númer sleppt):

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

    Til að eyða texta á undan fyrsta bili í fyrstu línu, og láta allar aðrar línur vera óbreyttar, er tilvik_númer frumbreytan stillt á 1:

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

    Regex til að fjarlægja allt á undan staf

    Auðveldasta leiðin til að fjarlægja allan texta á undan tilteknum staf er með því að nota regex svona:

    Almennt mynstur : ^[^char]*char

    Þýtt á mannamál segir það: "frá upphafi strengs sem er festur af ^ , passaðu við 0 eða fleiri stafi nema char [^char]* upp að fyrsta tilviki char .

    Til dæmis til að eyða öllum texta á undan fyrsta tvípunkti , notaðu þessa reglulegu segð:

    Mynstur : ^[^:]*:

    Til að forðast fremstu bil í niðurstöðunum skaltu bæta hvítbilsstafi \s* við enda. Þetta mun fjarlægja allt g á undan fyrsta ristlinum og klipptu öll bil beint á eftir honum:

    Mynstur : ^[^:]*:\s*

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

    Ábending. Auk venjulegra tjáninga hefur Excel sína eigin leiðir til að fjarlægja texta eftir staðsetningu eða samsvörun. Til að læra hvernig á að framkvæma verkefnið með innfæddum formúlum,vinsamlegast sjáðu Hvernig á að fjarlægja texta fyrir eða á eftir staf í Excel.

    Regex til að fjarlægja allt nema

    Til að eyða öllum stöfum úr streng nema þeim sem þú vilt halda skaltu nota óvirka stafaflokka.

    Til dæmis til að fjarlægja alla stafi nema lágstafi og punktar, regex er:

    Mynstur : [^a-z\.]+

    Reyndar gætum við verið án + magnans hér þar sem fallið okkar kemur í stað allra fundust samsvörun. Magnmælirinn gerir þetta bara örlítið hraðvirkara - í stað þess að meðhöndla hvern einstakan staf skiptir þú út undirstreng.

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

    Regex til að fjarlægja html merki í Excel

    Í fyrsta lagi skal tekið fram að HTML er ekki venjulegt tungumál, svo að flokka það með venjulegum segðum er ekki besta leiðin. Sem sagt, regexes geta örugglega hjálpað til við að fjarlægja merki úr frumunum þínum til að gera gagnasafnið þitt hreinna.

    Í ljósi þess að html merki eru alltaf sett innan hornsviga geturðu fundið þau með því að nota eina af eftirfarandi regexes.

    Neikvætt flokkur:

    Mynstur : ]*>

    Hér pössum við opnunarhornsklofa, fylgt eftir með núll eða fleiri tilvikum af hvaða staf sem er nema lokunarhornssvigi [^>]* upp að næsta lokunarhornssvigi.

    Lat leit:

    Mynstur :

    Hér pössum við saman allt frá fyrsta opnunarfestu til fyrsta lokunarkrafs. Spurningamerkið neyðir .* til að passa eins fáa stafi oglína.

    Til að vinna úr öllum línum sem einn streng:

    Almennt mynstur : char(.

    Michael Brown er hollur tækniáhugamaður með ástríðu fyrir því að einfalda flókna ferla með hugbúnaðarverkfærum. Með meira en áratug af reynslu í tækniiðnaðinum hefur hann aukið færni sína í Microsoft Excel og Outlook, sem og Google Sheets og Docs. Blogg Michael er tileinkað því að deila þekkingu sinni og sérfræðiþekkingu með öðrum, veita auðveld ráð og leiðbeiningar til að bæta framleiðni og skilvirkni. Hvort sem þú ert vanur fagmaður eða byrjandi, þá býður blogg Michaels upp á dýrmæta innsýn og hagnýt ráð til að fá sem mest út úr þessum nauðsynlegu hugbúnaðarverkfærum.