Parse test b'espressjonijiet regolari (RegExp) f'Excel

Parse test b'espressjonijiet regolari (RegExp) f'ExcelWaħda mill-aktar kompiti li jieħdu ħafna ħin u frustranti meta taħdem mat-test f'Excel hija parsing – parsing tal-"porridge" alfanumeriku f'komponenti u estrazzjoni tal-frammenti li neħtieġu minnu. Pereżempju:

  • estrazzjoni tal-kodiċi zip mill-indirizz (huwa tajjeb jekk il-kodiċi zip ikun dejjem fil-bidu, imma x'jiġri jekk ma jkunx?)
  • issib in-numru u d-data tal-fattura mid-deskrizzjoni tal-ħlas fir-rendikont bankarju
  • estrazzjoni ta 'TIN minn deskrizzjonijiet differenti ta' kumpaniji fil-lista ta 'kontropartijiet
  • fittex numru tal-karozza jew numru tal-artiklu fid-deskrizzjoni, eċċ.

Normalment f'każijiet bħal dawn, wara nofs siegħa ta 'picking dreary fit-test manwalment, il-ħsibijiet jibdew jiġu f'moħħna b'xi mod biex awtomat dan il-proċess (speċjalment jekk ikun hemm ħafna dejta). Hemm diversi soluzzjonijiet u bi gradi differenti ta' kumplessità-effiċjenza:

  • użu funzjonijiet tat-test Excel integrati biex tfittex test-cut-kolla: LEVSIMV (XELLUG), DRITT (DRITT), PSTR (nofs), STsEPIT (KONCATENA) u l-analogi tagħha, KOMBINA (TEST KONĠUNT), EXACT (EŻATT) eċċ Dan il-metodu huwa tajjeb jekk ikun hemm loġika ċara fit-test (per eżempju, l-indiċi jkun dejjem fil-bidu tal-indirizz). Inkella, il-formuli jsiru ħafna aktar ikkumplikati u, xi drabi, anke jiġu għal formuli ta 'firxa, li jonqos ħafna fuq tabelli kbar.
  • Bl-użu bħal operatur ta' xebh tat-test minn Visual Basic imgeżwer f'funzjoni makro personalizzata. Dan jippermettilek li timplimenta tfittxija aktar flessibbli billi tuża karattri wildcard (*, #,?, eċċ.) Sfortunatament, din l-għodda ma tistax tiġbed is-substring mixtieqa mit-test - iċċekkja biss jekk tinsabx fiha.

Minbarra dan ta 'hawn fuq, hemm approċċ ieħor li huwa magħruf ħafna f'ċrieki dojoq ta' programmaturi professjonali, żviluppaturi tal-web u techies oħra - dan huwa espressjonijiet regolari (Espressjonijiet Regolari = RegExp = “regexps” = “regolari”). Fi kliem sempliċi, RegExp hija lingwa fejn jintużaw karattri u regoli speċjali biex ifittxu s-substrings meħtieġa fit-test, jiġu estratti jew jissostitwixxuhom b'test ieħor.. L-espressjonijiet regolari huma għodda qawwija ħafna u sabiħa li taqbeż il-modi l-oħra kollha ta 'ħidma mat-test b'ordni ta' kobor. Ħafna lingwi ta' programmar (C#, PHP, Perl, JavaScript...) u edituri tat-test (Word, Notepad++...) jappoġġjaw espressjonijiet regolari.

Microsoft Excel sfortunatament m'għandux appoġġ RegExp barra mill-kaxxa, iżda dan jista 'jiġi ffissat faċilment b'VBA. Iftaħ l-Editur Visual Basic mit-tab iżviluppatur (Żviluppatur) jew shortcut tat-tastiera Alt+F11. Imbagħad daħħal il-modulu l-ġdid permezz tal-menu Daħħal – Modulu u kkopja t-test tal-funzjoni makro li ġejja hemmhekk:

Funzjoni Pubblika RegExpExtract(Text As String, Pattern As String, Optional Item As Integer = 1) As String On Error GoTo ErrHandl Issettja regex = CreateObject("VBScript.RegExp") regex.Pattern = Pattern regex.Global = Veru Jekk regex.Test (Test) Imbagħad Issettja logħbiet = regex.Eżegwixxi (Text) RegExpExtract = matchs.Item (Oġġett - 1) Ħruġ Funzjoni Tmiem Jekk ErrHandl: RegExpExtract = CVErr (xlErrValue) Tmiem Funzjoni  

Issa nistgħu nagħlqu l-Editur Visual Basic u nerġgħu lura għal Excel biex nippruvaw il-karatteristika l-ġdida tagħna. Is-sintassi tagħha hija din li ġejja:

=RegExpExtract(Txt; Mudell; Oġġett)

fejn

  • txt – ċellula bit-test li qed niċċekkjaw u li minnha rridu nġibu s-substring li għandna bżonn
  • mudell – maskra (mudell) għat-tfittxija tas-substring
  • Punt – in-numru tas-sekwenza tas-substring li għandu jiġi estratt, jekk ikun hemm diversi minnhom (jekk mhux speċifikat, allura l-ewwel okkorrenza hija murija)

L-aktar ħaġa interessanti hawnhekk, ovvjament, hija Pattern - mudell ta 'sekwenza ta' karattri speċjali "fil-lingwa" ta 'RegExp, li jispeċifika x'eżatt u fejn irridu nsibu. Hawn huma l-aktar bażiċi biex tibda:

 Pattern  deskrizzjoni
 . L-aktar sempliċi hija tikka. Taqbel ma' kwalunkwe karattru fil-mudell fil-pożizzjoni speċifikata.
 s Kwalunkwe karattru li jidher qisu spazju (spazju, tab, jew line break).
 S
Anti-varjant tal-mudell preċedenti, jiġifieri kwalunkwe karattru mhux ta' spazju abjad.
 d
Kull numru
 D
Anti-varjant ta 'qabel, jiġifieri kwalunkwe ċifra MHUX
 w Kwalunkwe karattru Latin (AZ), ċifra, jew underscore
 W Anti-varjant ta’ qabel, jiġifieri mhux Latin, mhux numru u mhux underscore.
[karattri] Fil-parentesi kwadri, tista' tispeċifika karattru wieħed jew aktar permessi fil-pożizzjoni speċifikata fit-test. Pereżempju Art se jaqbel ma' kwalunkwe kliem: tabella or president.

Tista' wkoll ma tenumera karattri, imma ssettjahom bħala firxa separata b'sing, jiġifieri minflok [ABDCDEF] jiktbu [AF]. jew minflok [4567] Jintroduċu [-4 7]. Pereżempju, biex tinnomina l-karattri Ċirilliċi kollha, tista’ tuża l-mudell [a-yaA-YayoYo].

[^karattri] Jekk wara l-parentesi kwadra tal-ftuħ żid is-simbolu "għatu" ^, allura s-sett jakkwista t-tifsira opposta - fil-pożizzjoni speċifikata fit-test, il-karattri kollha jkunu permessi, ħlief għal dawk elenkati. Iva, mudell [^ЖМ]ut issib Path or Sustanza or Tinsa, Iżda mhux Scary or mutt, eż.
 | Operatur Boolean OR (JEW) biex tiċċekkja għal xi wieħed mill-kriterji speċifikati. Pereżempju (biThu|sanke|fattura) se tfittex fit-test għal xi waħda mill-kliem speċifikati. Tipikament, sett ta 'għażliet huwa magħluq fil-parentesi.
 ^ Bidu tal-linja
 $ Tmiem tal-linja
 b Tmiem tal-kelma

Jekk qed infittxu ċertu numru ta 'karattri, pereżempju, kodiċi postali b'sitt ċifri jew il-kodiċijiet kollha tal-prodott bi tliet ittri, allura niġu għas-salvataġġ kwantifikaturi or kwantifikaturi huma espressjonijiet speċjali li jispeċifikaw in-numru ta' karattri li jridu jiġu mfittxija. Il-kwantifikaturi huma applikati għall-karattru li jiġi qabel:

  Quantor  deskrizzjoni
 ? Żero jew okkorrenza waħda. Pereżempju .? se tfisser kwalunkwe karattru wieħed jew l-assenza tiegħu.
 + Entrata waħda jew aktar. Pereżempju d+ tfisser kwalunkwe numru ta' ċifri (jiġifieri kwalunkwe numru bejn 0 u infinità).
 * Żero jew aktar okkorrenzi, jiġifieri kwalunkwe kwantità. Allura s* tfisser kwalunkwe numru ta' spazji jew ebda spazju.
{numru} or

{numru1,numru2}

Jekk għandek bżonn tispeċifika numru strettament definit ta 'okkorrenzi, allura huwa speċifikat fi ċineg kaboċċi. Pereżempju d{6} tfisser strettament sitt ċifri, u l-mudell s{2,5} – minn żewġ sa ħames spazji

Issa ejja ngħaddu għall-aktar parti interessanti – analiżi tal-applikazzjoni tal-funzjoni maħluqa u dak li tgħallimna dwar mudelli fuq eżempji prattiċi mill-ħajja.

Estrazzjoni ta 'numri mit-test

Biex tibda, ejja janalizzaw każ sempliċi - għandek bżonn tiġbed l-ewwel numru mill-porridge alfanumeriku, pereżempju, il-qawwa ta 'provvisti ta' enerġija mingħajr interruzzjoni mil-lista tal-prezzijiet:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Il-loġika wara l-espressjoni regolari hija sempliċi: d tfisser kwalunkwe ċifra, u l-kwantifikatur + jgħid li n-numru tagħhom għandu jkun wieħed jew aktar. Il-minus doppju quddiem il-funzjoni huwa meħtieġ biex "fuq it-titjir" jikkonverti l-karattri estratti f'numru sħiħ min-numru bħala test.

Kodiċi postali

L-ewwel daqqa t'għajn, kollox huwa sempliċi hawn - qed infittxu eżattament sitt ċifri wara xulxin. Aħna nużaw karattru speċjali d għal ċifra u kwantifikatur 6 {} għan-numru ta' karattri:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Madankollu, sitwazzjoni hija possibbli meta, fuq ix-xellug tal-indiċi fil-linja, hemm sett kbir ieħor ta 'numri wara xulxin (numru tat-telefon, TIN, kont bankarju, eċċ.) Imbagħad l-istaġun regolari tagħna se jiġbed l-ewwel 6. ċifri minnha, jiġifieri mhux se taħdem b'mod korrett:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Biex ma jseħħx dan, irridu nżidu modifikatur madwar it-truf tal-espressjoni regolari tagħna b li jfisser it-tmiem ta’ kelma. Dan jagħmilha ċara lil Excel li l-framment (indiċi) li neħtieġu għandu jkun kelma separata, u mhux parti minn framment ieħor (numru tat-telefon):

Parse test b'espressjonijiet regolari (RegExp) f'Excel

phone

Il-problema biex issib numru tat-telefon fit-test hija li hemm ħafna għażliet għall-kitba tan-numri - bi u mingħajr sings, permezz ta 'spazji, bi jew mingħajr kodiċi tar-reġjun fil-parentesi, eċċ. Għalhekk, fl-opinjoni tiegħi, huwa aktar faċli li l-ewwel naddaf dawn il-karattri kollha mit-test sors billi tuża diversi funzjonijiet nested SOSTITUT (SOSTITUT)sabiex twaħħal flimkien f'wieħed sħiħ, u mbagħad ma 'regolari primittiv d{11} iġbed 11-il ċifra wara xulxin:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

ITN

Hawn xi ftit iktar ikkumplikat, għax it-TIN (f’Pajjiżna) jista’ jkun ta’ 10 ċifri (għall-entitajiet legali) jew ta’ 12-il ċifri (għall-individwi). Jekk ma ssibx tort speċjalment, allura huwa pjuttost possibbli li tkun sodisfatt bir-regolari d{10,12}, iżda, strettament, se tiġbed in-numri kollha minn 10 sa 12-il karattru, jiġifieri u daħħal 11-il ċifra bi żball. Ikun aktar korrett li jintużaw żewġ mudelli konnessi minn operatur OR loġiku | (bar vertikali):

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Jekk jogħġbok innota li fil-mistoqsija l-ewwel infittxu numri 12-bit, u mbagħad biss għal numri 10-bit. Jekk niktbu l-espressjoni regolari tagħna bil-maqlub, allura se tiġbed għal kulħadd, anke TINs twal 12-bit, biss l-ewwel 10 karattri. Jiġifieri, wara li tiġi attivata l-ewwel kundizzjoni, ma tibqax issir aktar verifika:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Din hija d-differenza fundamentali bejn l-operatur | minn funzjoni loġika standard excel OR (JEW), fejn l-arranġament mill-ġdid tal-argumenti ma jbiddilx ir-riżultat.

SKUs tal-Prodott

F'ħafna kumpaniji, identifikaturi uniċi huma assenjati għal oġġetti u servizzi - artikoli, kodiċi SAP, SKUs, eċċ. Jekk ikun hemm loġika fin-notazzjoni tagħhom, allura jistgħu jinġibdu faċilment minn kwalunkwe test bl-użu ta 'espressjonijiet regolari. Pereżempju, jekk nafu li l-artikoli tagħna dejjem jikkonsistu fi tliet ittri kapitali bl-Ingliż, sing u numru sussegwenti bi tliet ċifri, allura:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Il-loġika wara l-mudell hija sempliċi. [AZ] – tfisser kwalunkwe ittra kapitali tal-alfabett Latin. Il-kwantifikatur li jmiss 3 {} jgħid li huwa importanti għalina li hemm eżattament tliet ittri bħal dawn. Wara s-sing, qed nistennew tliet ċifri, għalhekk inżidu fl-aħħar d{3}

Ammonti fi flus

B'mod simili għall-paragrafu preċedenti, tista' wkoll tiġbed il-prezzijiet (spejjeż, VAT ...) mid-deskrizzjoni tal-merkanzija. Jekk l-ammonti monetarji, pereżempju, huma indikati b'sing, allura:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Pattern d bil-kwantifikatur + tfittxijiet għal kwalunkwe numru sa sing, u d{2} se tfittex pennies (żewġ ċifri) wara.

Jekk għandek bżonn tiġbed mhux il-prezzijiet, iżda l-VAT, allura tista 'tuża t-tielet argument fakultattiv tal-funzjoni RegExpExtract tagħna, li tispeċifika n-numru ordinali tal-element li għandu jiġi estratt. U, ovvjament, tista 'tissostitwixxi l-funzjoni SOSTITUT (SOSTITUT) fir-riżultati, sing mas-separatur deċimali standard u żid minus doppju fil-bidu sabiex Excel jinterpreta l-VAT misjuba bħala numru normali:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Numri tal-pjanċa tal-karozzi

Jekk ma tieħux vetturi speċjali, karrijiet u muturi oħra, allura n-numru standard tal-karozza jiġi analizzat skond il-prinċipju "ittra - tliet numri - żewġ ittri - kodiċi tar-reġjun". Barra minn hekk, il-kodiċi tar-reġjun jista 'jkun ta' 2 jew 3 ċifri, u dawk biss li huma simili fid-dehra għall-alfabett Latin huma użati bħala ittri. Għalhekk, l-espressjoni regolari li ġejja tgħinna nġibu n-numri mit-test:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

ħin

Biex tiġi estratta l-ħin fil-format HH:MM, l-espressjoni regolari li ġejja hija adattata:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Wara framment tal-kolon [0-5]d, peress li huwa faċli biex insemmu, jistabbilixxi kwalunkwe numru fil-medda 00-59. Qabel il-kolon fil-parentesi, jaħdmu żewġ mudelli, separati minn OR loġiku (pajp):

  • [0-1]d – kwalunkwe numru fil-medda 00-19
  • 2[0-3] – kwalunkwe numru fil-medda 20-23

Għar-riżultat miksub, tista 'addizzjonalment tapplika l-funzjoni standard Excel ĦIN (TIM)biex jaqilbu f'format ta 'ħin li jinftiehem mill-programm u adattat għal aktar kalkoli.

Iċċekkja l-password

Ejja ngħidu li għandna bżonn niċċekkjaw il-lista ta 'passwords ivvintati mill-utenti għall-korrettezza. Skont ir-regoli tagħna, il-passwords jista' jkun fihom biss ittri bl-Ingliż (ittri żgħar jew kbar) u numri. L-ispazji, is-sottolinja u marki oħra ta' punteġġjatura mhumiex permessi.

L-iċċekkjar jista’ jiġi organizzat bl-użu tal-espressjoni regolari sempliċi li ġejja:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Fil-fatt, b'tali mudell neħtieġu li bejn il-bidu (^) u tmiem ($) fit-test tagħna kien hemm biss karattri mis-sett mogħti fil-parentesi kwadri. Jekk għandek bżonn ukoll tiċċekkja t-tul tal-password (per eżempju, mill-inqas 6 karattri), allura l-kwantifikatur + jistgħu jiġu sostitwiti bl-intervall "sitta jew aktar" fil-formola {6,}:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Belt mill-indirizz

Ejja ngħidu li għandna bżonn iġbed il-belt mill-bar tal-indirizz. Il-programm regolari se jgħin, jiġbed it-test minn "g." għall-virgola li jmiss:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Ejja nagħtu ħarsa aktar mill-qrib lejn dan il-mudell.

Jekk qrajt it-test ta 'hawn fuq, allura diġà fhimt li xi karattri f'espressjonijiet regolari (perijodi, asterisks, sinjali tad-dollaru, eċċ.) għandhom tifsira speċjali. Jekk għandek bżonn tfittex dawn il-karattri huma stess, imbagħad ikunu preċeduti minn backslash (xi kultant imsejħa shielding). Għalhekk, meta tkun qed tfittex il-framment “g.” irridu niktbu b’espressjoni regolari Mr jekk qed infittxu plus, allura + eċċ.

Iż-żewġ karattri li jmiss fil-mudell tagħna, it-tikka u l-asterisk tal-kwantifikatur, huma għal kull numru ta' kwalunkwe karattri, jiġifieri kwalunkwe isem ta' belt.

Hemm virgola fl-aħħar tal-mudell, għax qed infittxu test minn "g." għal virgola. Imma jista’ jkun hemm diversi virgoli fit-test, hux? Mhux biss wara l-belt, imma wkoll wara t-triq, djar, eċċ. Fuq liema minnhom se tieqaf it-talba tagħna? Għal dan huwa l-punt tal-mistoqsija. Mingħajrha, l-espressjoni regolari tagħna tiġbed l-itwal string possibbli:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

F'termini ta 'espressjonijiet regolari, mudell bħal dan huwa "greedy". Biex tikkoreġi s-sitwazzjoni, hemm bżonn ta' marka ta' mistoqsija - tagħmel il-kwantifikatur li warajh ikun "tagħna" - u l-mistoqsija tagħna tieħu t-test biss sal-ewwel counter virgola wara "g.":

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Isem tal-fajl mill-mogħdija sħiħa

Sitwazzjoni oħra komuni ħafna hija li jiġi estratt l-isem tal-fajl mill-mogħdija sħiħa. Espressjoni regolari sempliċi tal-formola tgħin hawn:

Parse test b'espressjonijiet regolari (RegExp) f'Excel

Il-trick hawnhekk huwa li t-tfittxija, fil-fatt, isseħħ fid-direzzjoni opposta - mill-aħħar sal-bidu, għaliex fl-aħħar tal-mudell tagħna huwa $, u qed infittxu kollox qabel sa l-ewwel backslash mil-lemin. Il-backslash huwa maħruba, bħall-tikka fl-eżempju preċedenti.

PS

"Lejn l-aħħar" Irrid niċċara li dak kollu ta 'hawn fuq huwa parti żgħira mill-possibbiltajiet kollha li jipprovdu espressjonijiet regolari. Hemm ħafna karattri speċjali u regoli għall-użu tagħhom, u kotba sħaħ inkitbu fuq dan is-suġġett (nirrakkomanda tal-inqas dan wieħed għall-bidu). B'xi mod, il-kitba ta 'espressjonijiet regolari hija kważi arti. Kważi dejjem, espressjoni regolari ivvintata tista 'tiġi mtejba jew supplimentata, u tagħmilha aktar eleganti jew kapaċi taħdem ma' firxa usa 'ta' data input.

Biex tanalizza u teżamina l-espressjonijiet regolari ta’ nies oħrajn jew tiddibaggja tiegħek, hemm diversi servizzi konvenjenti online: RegEx101, RegExr u aktar

Sfortunatament, mhux il-karatteristiċi kollha ta 'espressjonijiet regolari klassiċi huma appoġġjati f'VBA (per eżempju, tfittxija b'lura jew klassijiet POSIX) u jistgħu jaħdmu ma' Cyrillic, iżda naħseb li dak li hemm huwa biżżejjed għall-ewwel darba biex jekk jogħġbok.

Jekk m'intix ġdid fis-suġġett, u għandek xi ħaġa x'taqsam, ħalli espressjonijiet regolari utli meta taħdem f'Excel fil-kummenti hawn taħt. Moħħ wieħed huwa tajjeb, iżda żewġ stivali huma par!

  • Sostituzzjoni u tindif tat-test bil-funzjoni SOSTITUT
  • Tiftix u enfasi ta' karattri Latini fit-test
  • Fittex l-eqreb test simili (Ivanov = Ivonov = Ivanof, eċċ.)

Ħalli Irrispondi