Enhavtabelo
En la subaj ĉenoj, supozu, ke vi volas forigi la unuan ordon nombron. Ĉiuj tiaj nombroj komenciĝas per la hash-signo (#) kaj enhavas ekzakte 5 ciferojn. Do, ni povas identigi ilin uzante ĉi tiun regex:
Modelo : #\d{5}\b
La vortlimo \b specifas, ke kongrua subĉeno ne povas esti parto de pli granda ĉeno kiel #10000001.
Por forigi ĉiujn kongruojn, la argumento instance_num ne estas difinita:
=RegExpReplace(A5, "#\d{5}\b", "")
Por forigi nur la unuan aperon, ni starigas la argumenton instance_num al 1:
=RegExpReplace(A5, "#\d{5}\b", "", 1)
Regex forigi iujn signojn
Por forigi iujn signojn de ĉeno, simple skribu ĉiujn nedeziratajn signojn kaj apartigu ilin per vertikala strekosintakso sen VBA RegExp-limigoj, kaj due, ne postulas enmeti ajnan VBA-kodon en viaj laborlibroj ĉar la tuta koda integriĝo estas farita de ni ĉe la malantaŭo.
Via parto de la laboro estas konstrui regulan esprimon kaj servu ĝin al la funkcio :) Mi montru al vi kiel fari tion sur praktika ekzemplo.
Kiel forigi tekston inter krampoj kaj krampoj uzante regex
En longaj tekstaj ĉenoj, malpli gravaj informoj. estas ofte enfermita inter [krampoj] kaj (krampoj). Kiel vi forigas tiujn sensignifajn detalojn konservante ĉiujn aliajn datumojn?
Fakte, ni jam konstruis similan regex por forigi html-etikedojn, t.e. tekston en angulaj krampoj. Evidente, la samaj metodoj funkcios ankaŭ por kvadrataj kaj rondaj krampoj.
Skemo : (\(.*?\))
Ĉu vi iam pensis kiom potenca Excel estus se iu povus riĉigi ĝian ilarkeston per regulaj esprimoj? Ni ne nur pensis, sed laboris pri ĝi :) Kaj nun, vi povas aldoni ĉi tiun mirindan RegEx-funkcion al viaj propraj laborlibroj kaj forigi subŝnurojn kongruajn kun ŝablono en baldaŭa tempo!
Lastan semajnon, ni rigardis. pri kiel uzi regulajn esprimojn por anstataŭigi ŝnurojn en Excel. Por tio, ni kreis kutiman Regex Replace-funkcion. Kiel evidentiĝis, la funkcio superas sian ĉefan uzon kaj povas ne nur anstataŭigi ŝnurojn sed ankaŭ forigi ilin. Kiel tio povus esti? Koncerne Excel, forigi valoron estas nenio alia ol anstataŭigi ĝin per malplena ĉeno, io pri kio nia Regex-funkcio tre bonas!
VBA RegExp-funkcio por forigi subŝnurojn en Excel
Kiel ni ĉiuj scias, regulaj esprimoj ne estas subtenataj en Excel defaŭlte. Por ebligi ilin, vi devas krei vian propran uzant-difinitan funkcion. La bona novaĵo estas, ke tia funkcio jam estas skribita, testita kaj preta por uzo. Ĉio, kion vi devas fari, estas kopii ĉi tiun kodon, alglui ĝin en vian VBA-redaktilon, kaj poste konservi vian dosieron kiel makro-ebligita laborlibro (.xlsm).
La funkcio havas la jena sintakso:
RegExpReplace(teksto, ŝablono, anstataŭaĵo, [instance_num], [match_case])La unuaj tri argumentoj estas postulataj, la lastaj du estas laŭvolaj.
Kie:
- Teksto - la tekstoĉeno serĉendaebla ĝis ĝi trovas ferman krampon.
Kiu ajn ŝablono vi elektos, la rezulto estos absolute la sama.
Ekzemple, por forigi ĉiujn html-etikedojn de ĉeno en A5 kaj lasi tekston, la formulo estas:
=RegExpReplace(A5, "]*>", "")
Aŭ vi povas uzi la maldiligentan kvanton kiel montrita en la ekrankopio:
Ĉi tiu solvo funkcias perfekte por ununura teksto (vicoj 5 - 9). Por pluraj tekstoj (vicoj 10 - 12), la rezultoj estas dubindaj - tekstoj de malsamaj etikedoj estas kunfanditaj en unu. Ĉu ĉi tio estas ĝusta aŭ ne? Mi timas, ke ĝi ne estas io facile decidiebla - ĉio dependas de via kompreno pri la dezirata rezulto. Ekzemple, en B11, la rezulto "A1" estas atendata; dum en B10, vi eble volas ke "datumoj1" kaj "datumoj2" estu apartigitaj per spaco.
Por forigi html-etikedojn kaj apartigi la ceterajn tekstojn per spacoj, vi povas procedi tiamaniere:
- Anstataŭigi etikedojn per spacoj " ", ne malplenaj ĉenoj:
=RegExpReplace(A5, "]*>", " ")
- Reduktu plurajn spacojn al ununura spaca signo:
=RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")
- Eltondi antaŭajn kaj finajn spacojn:
=TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))
La rezulto aspektos kiel ĉi tio:
Ablebits Regex Remove Tool
Se vi havis ŝancon uzi nian Finfinan Suite por Excel, vi verŝajne jam malkovris la novajn Regex Ilojn prezentitajn kun la lastatempa eldono. La beleco de ĉi tiuj Regex-funkcioj bazitaj en .NET estas, ke ili, unue, subtenas plenefikajn regulajn esprimojn.la opcion Forigi , kaj premu Forigi .
Por akiri la rezultojn kiel formuloj, ne valoroj, elektu la markobutonon Enmeti kiel formulon .
Por forigi tekston inter krampoj el ĉenoj en A2:A5, ni agordas la agordojn. jene:
Kiel rezulto, la funkcio AblebitsRegexRemove estas enmetita en novan kolumnon apud viaj originalaj datumoj.
La funkcio ankaŭ povas esti enigita rekte en ĉelon per la norma dialogujo Enmeti Funkcion , kie ĝi estas kategoriigita sub AblebitsUDFs .
Ĉar AblebitsRegexRemove estas desegnita por forigi tekston, ĝi postulas nur du argumentojn - la fontoĉeno kaj regex. Ambaŭ parametroj povas esti difinitaj rekte en formulo aŭ liveritaj en la formo de ĉelaj referencoj. Se necese, ĉi tiu kutima funkcio povas esti uzata kune kun iuj denaskaj.
Ekzemple, por tranĉi kromajn spacojn en la rezultaj ŝnuroj, vi povas uzi la TRIM-funkcion kiel envolvaĵon:
=TRIM(AblebitsRegexRemove(A5, $A$2))
Tiel forigi ŝnurojn en Excel uzante regulajn esprimojn. Mi dankas vin pro legado kaj antaŭĝojas vidi vin en nia blogo venontsemajne!
Haveblaj elŝutoj
Forigi ĉenojn per regex - ekzemploj (.xlsm-dosiero)
Ultimate Suite - provversio (.exe dosiero)
in.Por pliaj informoj, bonvolu vidi funkcion RegExpReplace.
Konsileto. En simplaj kazoj, vi povas forigi specifajn signojn aŭ vortojn el ĉeloj per Excel-formuloj. Sed regulaj esprimoj provizas multe pli da ebloj por tio.
Kiel forigi ŝnurojn per regulaj esprimoj - ekzemploj
Kiel supre menciite, por forigi partojn de teksto kongruaj kun ŝablono, vi devas anstataŭigi ilin kun malplena ŝnuro. Do, ĝenerala formulo prenas ĉi tiun formon:
RegExpReplace(teksto, ŝablono, "", [instance_num], [match_case])La subaj ekzemploj montras diversajn efektivigojn de ĉi tiu baza koncepto.
Forigi ĉiuj kongruoj aŭ specifa kongruo
La funkcio RegExpReplace estas desegnita por trovi ĉiujn subĉenojn kongruajn kun difinita regex. Kiuj okazoj forigi estas kontrolataj de la 4-a laŭvola argumento, nomita instance_num .
La defaŭlta estas "ĉiuj kongruoj" - kiam la instance_num kunkatenigfunkciigisto (&) kaj Tekstaj funkcioj kiel DEKSTRA, MEZA kaj LEFT.
Ekzemple, por skribi ĉiujn telefonnumerojn en la (123) 456-7890 formato, la formulo estas:
="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)
Kie B5 estas la eligo de la funkcio RegExpReplace.
Forigu specialajn signojn uzante regex
En unu el niaj lerniloj, ni rigardis kiel forigi nedeziratajn signojn en Excel uzante enkonstruitajn kaj kutimajn funkciojn. Regulaj esprimoj faciligas aferojn! Anstataŭ listigi ĉiujn signojn por forigi, simple specifu tiujn, kiujn vi volas konservi :)
La ŝablono baziĝas sur neitaj signoklasoj - signo estas metita ene de signoklaso [^ ] por kongrui kun ajna unuopa signo NE inter krampoj. La + kvantigilo devigas ĝin rigardi sinsekvajn signojn kiel ununuran kongruon, tiel ke anstataŭigo estas farita por kongrua subĉeno prefere ol por ĉiu individua signo.
Laŭ viaj bezonoj, elektu unu el la sekvaj regeksoj.
Por forigi ne-alfanombrajn signojn, t.e. ĉiujn signojn krom literoj kaj ciferoj:
Skemo : [^0-9a-zA-Z] +
Por purigi ĉiujn signojn krom literoj , ciferoj kaj spacoj :
Skemo : [^0-9a-zA-Z ]+
Por forigi ĉiujn signojn krom literoj , ciferoj kaj substreko , vi povas uzi \ W kiu signifas ajnan signon kiu NE estas alfanombra signo aŭsubstreko:
Skemo : \W+
Se vi volas konservi iujn aliajn signojn , ekz. interpunkciosignoj, metu ilin en la krampojn.
Ekzemple, por forigi ajnan signon krom litero, cifero, punkto, komo aŭ spaco, uzu la jenan regex:
Ŝablono : [^0-9a-zA-Z\., ]+
Tio sukcese forigas ĉiujn specialajn signojn, sed kroma blankspaco restas.
Por ripari ĉi tion, vi povas nesti la supran funkcion en alian, kiu anstataŭigas plurajn spacojn per unuopa spaca signo.
=RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")
Aŭ simple uzi la denaskan TRIM-funkcion kun la sama efiko. :
=TRIM(RegExpReplace(A5, $A$2, ""))
Regex por forigi ne-nombrajn signojn
Por forigi ĉiujn ne-nombrajn signojn de ĉeno, vi povas uzi aŭ ĉi tiu longa formulo aŭ unu el la tre simplaj regeksoj listigitaj malsupre.
Kongruu kun ajna signo kiu NE estas cifero:
Skemo : \D+
Forigi ne-nombrajn signojn uzante neigitajn klasojn:
Skemo : [^0-9]+
Skemo : [^\d] +
Konsileto. Se via celo estas forigi tekston kaj disverŝi la ceterajn nombrojn en apartajn ĉelojn aŭ meti ilin ĉiujn en unu ĉelon apartigitan per specifita limigilo, tiam uzu la RegExpExtract-funkcion kiel klarigite en Kiel ĉerpi nombrojn el ŝnuro uzante regulajn esprimojn.
Regex por forigi ĉion post spaco
Por forigi ĉion post spaco, uzu aŭ la spacon ( ) aŭblankspaco (\s) signo por trovi la unuan spacon kaj .* por kongrui iujn ajn signojn post ĝi.
Se vi havas unuliniajn ĉenojn kiuj enhavas nur normalajn spacojn (valoro 32 en la 7-bita ASCII-sistemo) , ne vere gravas kiun el la subaj regeksoj vi uzas. Okaze de plurliniaj ĉenoj, ĝi ja faras diferencon.
Por forigi ĉion post spaca signo , uzu ĉi tiun regex:
Skemo : " .*"
=RegExpReplace(A5, " .*", "")
Ĉi tiu formulo forigos ion ajn post la unua spaco en ĉiu linio . Por ke la rezultoj aperos ĝuste, nepre ŝaltu Envolvi tekston.
Por forigi ĉion post blankspaco (inkluzive spacon, tabuladon, kaleŝon kaj novan linion), la regex. estas:
Skemo : \s.*
=RegExpReplace(A5, "\s.*", "")
Ĉar \s kongruas kun kelkaj malsamaj blankspacoj inkluzive de nova linio (\n), ĉi tiu formulo forigas ĉion post la unua spaco en ĉelo, negrave kiom da linioj estas en ĝi.
Regex por forigi tekston post specifa. karaktero
Uzante la metodojn de la antaŭa ekzemplo, vi povas forigi tekston post iu ajn signo kiun vi specifis.
Por trakti ĉiun linion aparte:
Ĝenerala ŝablono : char.*
En unuliniaj ĉenoj, ĉi tio forigos ĉion post char . En plurliniaj ĉenoj, ĉiu linio estos prilaborita individue ĉar en la VBA Regex-gusto, punkto (.) kongruas kun ajna signo krom nova.komenco de ĉeno ^, ni kongruas kun nul aŭ pli da nespacaj signoj [^ ]* kiuj estas tuj sekvataj de unu aŭ pluraj spacoj " +". La lasta parto estas aldonita por malhelpi eblajn ĉefajn spacojn en la rezultoj.
Por forigi tekston antaŭ la unua spaco en ĉiu linio, la formulo estas skribita en la defaŭlta "ĉiuj kongruoj" reĝimo ( instance_num ellasita):
=RegExpReplace(A5, "^[^ ]* +", "")
Por forigi tekston antaŭ la unua spaco en la unua linio, kaj lasi ĉiujn aliajn liniojn nerompitaj, la argumento instance_num estas agordita al 1:
=RegExpReplace(A5, "^[^ ]* +", "", 1)
Regekso por forigi ĉion antaŭ signo
La plej facila maniero forigi la tutan tekston antaŭ specifa signo estas uzi regekson tiel:
Ĝenerala ŝablono : ^[^char]*char
Tradukita en homan lingvon, ĝi diras: "de la komenco de ĉeno ankrita de ^ , kongruu kun 0 aŭ pli da signoj krom char [^char]* ĝis la unua okazo de char .
Ekzemple, por forigi la tutan tekston antaŭ la unua dupunkto , uzu ĉi tiun regulan esprimon:
Ŝablono : ^[^:]*:
Por eviti kondukajn spacojn en la rezultoj, aldonu blankspacon \s* al la fino. Ĉi tio forigos ĉion g antaŭ la unua dupunkto kaj tranĉu iujn ajn spacojn tuj post ĝi:
Modelo : ^[^:]*:\s*
=RegExpReplace(A5, "^[^:]*:\s*", "")
Konsileto. Krom regulaj esprimoj, Excel havas siajn proprajn rimedojn por forigi tekston laŭ pozicio aŭ kongruo. Por lerni kiel plenumi la taskon per denaskaj formuloj,bonvolu vidi Kiel forigi tekston antaŭ aŭ post signo en Excel.
Regex por forigi ĉion krom
Por ekstermi ĉiujn signojn de ĉeno krom tiuj, kiujn vi volas konservi, uzu negitajn klasojn.
Ekzemple, por forigi ĉiujn signojn krom minusklaj literoj. kaj punktoj, la regex estas:
Skemo : [^a-z\.]+
Fakte, ni povus malhavi la + kvantigilon ĉi tie ĉar nia funkcio anstataŭigas ĉiujn trovis kongruojn. La kvantigilo simple faras ĝin iom pli rapida - anstataŭ trakti ĉiun individuan signon, vi anstataŭigas subĉenon.
=RegExpReplace(A5, "[^a-z\.]+", "")
Regex por forigi html-etikedojn en Excel.
Unue, oni devas rimarki, ke HTML ne estas regula lingvo, do analizi ĝin per regulaj esprimoj ne estas la plej bona maniero. Dirite, regeksoj certe povas helpi forigi etikedojn el viaj ĉeloj por purigi vian datumaron.
Konsiderante ke html-etikedoj ĉiam estas metitaj en angulaj krampoj , vi povas trovi ilin uzante unu el la sekvaj regeksoj.
Neigita klaso:
Skemo : ]*>
Ĉi tie, ni kongruas kun malferma angula krampo, sekvita de nul aŭ pli da aperoj de iu ajn signo krom la ferma angula krampo [^>]* ĝis la plej proksima ferma angula krampo.
Maldiligenta serĉo:
Skemo :
Ĉi tie, ni kongruas io ajn de la unua malferma krampo ĝis la unua ferma krampo. La demandosigno devigas .* egali tiom da signoj kiomlinio.
Por prilabori ĉiujn liniojn kiel ununura ĉeno:
Ĝenerala ŝablono : char(.