Excel RegEx piemēri: regulāru formulu izmantošana formulās

  • Dalīties Ar Šo
Michael Brown

Nekad nesapratāt, kāpēc regulārās izteiksmes nav atbalstītas Excel formulās? Tagad tās ir atbalstītas :) Izmantojot mūsu pielāgotās funkcijas, varat viegli atrast, aizstāt, izvilkt un izņemt virknes, kas atbilst noteiktam paraugam.

No pirmā acu uzmetiena šķiet, ka Excel ir viss, kas jums varētu būt nepieciešams teksta virkņu manipulācijām. Hmm... bet kā ir ar regulārām izteiksmēm? Oops, Excel nav iebūvētu Regex funkciju. Bet neviens nesaka, ka mēs nevaram izveidot savas :)

    Kas ir regulārā izteiksme?

    Regulārā izteiksme (jeb regekss vai regexp ) ir īpaši kodēta rakstzīmju virkne, kas definē meklēšanas modeli. Izmantojot šo modeli, jūs varat atrast atbilstošu rakstzīmju kombināciju virknē vai pārbaudīt ievadītos datus. Ja esat pazīstams ar aizstājējzīmju apzīmējumu, jūs varat domāt par regeksiem kā par uzlabotu aizstājējzīmju versiju.

    Regulārajām izteiksmēm ir sava sintakse, kas sastāv no īpašām rakstzīmēm, operatoriem un konstrukcijām. Piemēram, [0-5] atbilst jebkuram ciparam no 0 līdz 5.

    Regulārās izteiksmes tiek izmantotas daudzās programmēšanas valodās, tostarp JavaScript un VBA. Pēdējā no minētajām valodām ir īpašs RegExp objekts, kuru izmantosim, lai izveidotu pielāgotās funkcijas.

    Vai Excel atbalsta regeksus?

    Diemžēl programmā Excel nav iebūvētu Regex funkciju. Lai formulās varētu izmantot regulārās izteiksmes, jums būs jāizveido sava lietotāja definēta funkcija (VBA vai .NET) vai jāinstalē trešo pušu rīki, kas atbalsta regeksus.

    Excel Regex uzvilkšanas lapa

    Neatkarīgi no tā, vai regeksas modelis ir ļoti vienkāršs vai ārkārtīgi sarežģīts, tas tiek veidots, izmantojot kopīgo sintaksi. Šīs pamācības mērķis nav iemācīt regulārās izteiksmes. Šim nolūkam tiešsaistē ir daudz resursu, sākot ar bezmaksas pamācībām iesācējiem un beidzot ar augstākās klases kursiem pieredzējušiem lietotājiem.

    Zemāk mēs piedāvājam īsu atsauci uz galvenajiem RegEx modeļiem, kas palīdzēs jums apgūt pamatus. Tā var kalpot arī kā uzskates lapa, pētot turpmākos piemērus.

    Ja jums ir labas zināšanas par regulārām izteiksmēm, varat pāriet uzreiz pie RegExp funkcijām.

    Rakstzīmes

    Šie ir visbiežāk izmantotie paraugi, kas atbilst noteiktām rakstzīmēm.

    Modelis Apraksts Piemērs Matches
    . aizstājējzīme: atbilst jebkurai atsevišķai rakstzīmei, izņemot rindas pārrāvumu. .ot dot , karsts , katls , @ot
    \d Ciparu rakstzīme: jebkurš cipars no 0 līdz 9. \d In a1b , spēles 1
    \D Jebkura rakstzīme, kas NAV cipars \D In a1b , spēles a un b
    \s Baltās atstarpes rakstzīmes: atstarpe, tabulators, jauna rindiņa un atgriezeniskā rindiņa. .\s. In 3 centi , spēles 3 c
    \S Jebkurš raksturs, kas nav baltā atstarpes zīme \S+ In 30 centu , spēles 30 un centu
    \w Vārda rakstzīme: jebkurš ASCII burts, cipars vai zemsvītras zīme. \w+ In 5_cats*** , spēles 5_cats
    \W Jebkura rakstzīme, kas NAV burtciparu rakstzīme vai mazsvītrkājis. \W+ In 5_cats*** , spēles ***
    \t Cilne
    \n Jauna līnija \n\d+ Tālāk redzamajā divu rindu virknē atbilst 10

    5 kaķi

    10 suņi

    \ Izvairās no rakstzīmes īpašās nozīmes, lai to varētu meklēt. \.

    \w+\.

    Izvairās no punkta, lai virknē varētu atrast burtisku "." rakstzīmi.

    M. , kundze. , Prof.

    Rakstzīmju klases

    Izmantojot šos šablonus, varat saskaņot dažādu rakstzīmju kopu elementus.

    Modelis Apraksts Piemērs Matches
    [rakstzīmes] Atbilst jebkurai vienai rakstzīmei iekavās d[oi]g suns un dig
    [^zīmes] Atbilst jebkurai vienai rakstzīmei, kas NAV iekavās. d[^oi]g Matches dag, dag, dag , d1g

    Neatbilst suns un dig

    [no-līdz] Atbilst jebkurai rakstzīmei diapazonā starp iekavām. [0-9]

    [a-z]

    [A-Z]

    Jebkurš viens cipars no 0 līdz 9

    Jebkurš viens mazais burts

    Jebkurš lielais burts

    Kvantifikatori

    Kvantifikatori ir īpašas izteiksmes, kas norāda saskaņojamo rakstzīmju skaitu. Kvantifikators vienmēr attiecas uz rakstzīmi pirms tā.

    Modelis Apraksts Piemērs Matches
    * Nulle vai vairāk gadījumu 1a* 1, 1a , 1aa, 1aaa, 1aaa , utt.
    + Viens vai vairāki gadījumi po+ In katls , spēles pēc

    In slikts , spēles kaku

    ? Nulle vai viens gadījums roa?d ceļš, stienis
    *? nulle vai vairāk gadījumu, bet pēc iespējas mazāk. 1a*? In 1a , 1aa un 1aaa , spēles 1a
    +? Viens vai vairāki gadījumi, bet pēc iespējas mazāk. po+? In katls un slikts , spēles pēc
    ?? Nulle vai viens gadījums, bet pēc iespējas mazāk. roa?? In ceļš un rod , spēles ro
    {n} Atbilst iepriekšējam rakstam n reižu \d{3} Tieši 3 cipari
    {n,} Atbilst iepriekšējam rakstam n vai vairāk reižu. \d{3,} 3 vai vairāk cipari
    {n,m} Atbilst iepriekšējam rakstam no n līdz m reižu. \d{3,5} No 3 līdz 5 cipariem

    Grupēšana

    Grupēšanas konstrukcijas tiek izmantotas, lai no avota virknes pārņemtu apakšvirzienu, lai ar to varētu veikt kādu darbību.

    Sintakse Apraksts Piemērs Matches
    (modelis) Uztveršanas grupa: uztver atbilstošo apakšvirni un piešķir tai kārtas numuru. (\d+) In 5 kaķi un 10 suņi , uztver 5 (1. grupa) un 10 (2. grupa)
    (?:pattern) Neuztvert grupa: atbilst grupai, bet to neuztver. (\d+)(?: suņi) In 5 kaķi un 10 suņi , uztver 10
    \1 1. grupas saturs (\d+)\+(\d+)=\2\+\1 Atbilst 5+10=10+5 un uztver 5 un 10 , kas atrodas uztveršanas grupās
    \2 2. grupas saturs

    Enkuri

    Enkuri norāda pozīciju ievades virknē, kurā meklēt atbilstību.

    Anchor Apraksts Piemērs Matches
    ^ Virknes sākums

    Piezīme: [^uzkavās] nozīmē "nav".

    ^\d+ Jebkurš ciparu skaits virknes sākumā.

    In 5 kaķi un 10 suņi , spēles 5

    $ Virknes beigas \d+$ Jebkurš ciparu skaits virknes beigās.

    In 10 plus 5 ir 15 , spēles 15

    \b Vārda robeža \bjoy\b Matches prieks kā atsevišķs vārds, bet ne patīkams .
    \B NAV vārda robeža \Bjoy\B Matches prieks vietnē patīkams , bet ne kā atsevišķs vārds.

    Pārmaiņu (OR) konstrukcija

    Ar pārmaiņu operandu ir iespējota OR loģika, tāpēc varat saskaņot vai nu šo, vai šo elementu.

    Konstruēt Apraksts Piemērs Matches
    Atbilst jebkuram atsevišķam elementam, kas atdalīts ar vertikālo svītru. (s In viņa pārdod jūras gliemežvākus, atbilst pārdod un čaulas

    Apskates vietas

    Aplūkošanas konstrukcijas ir noderīgas, ja vēlaties saskaņot kaut ko, kam seko vai neseko vai pirms kā neseko kaut kas cits. Šīs izteiksmes dažkārt sauc par "nulles platuma apgalvojumiem" vai "nulles platuma atbilstību", jo tās atbilst pozīcijai, nevis faktiskajām rakstzīmēm.

    Piezīme. VBA RegEx versijā Lookbehinds nav atbalstīti.

    Modelis Apraksts Piemērs Matches
    (?=) Pozitīva perspektīva X(?=Y) Atbilst izteiksmei X, ja tai seko Y (t. i., ja pirms X ir Y).
    (?!) Negatīvs pārskats X(?!Y) Atbilst izteiksmei X, ja tai NAV seko Y
    (?<=) Pozitīvs skatījums (?<=Y)X Atbilst izteiksmei X, ja pirms tās ir Y (t. i., ja aiz X ir Y).
    (? )</td Negatīvs skats no aizmugures (? Y)X</td Atbilst izteiksmei X, ja pirms tās NAV izteiksmes Y

    Tagad, kad esat uzzinājis būtiskāko, pāriesim pie interesantākās daļas - izmantosim regekses reālos datos, lai analizētu virknes un atrastu vajadzīgo informāciju. Ja jums nepieciešama sīkāka informācija par sintaksi, noderīgs var izrādīties Microsoft ceļvedis par regulāro izteicienu valodu.

    Pielāgotās RegEx funkcijas programmā Excel

    Kā jau minēts, programmā Microsoft Excel nav iebūvētu RegEx funkciju. Lai iespējotu regulārās izteiksmes, esam izveidojuši trīs pielāgotas VBA funkcijas (jeb lietotāja definētas funkcijas). Kodus varat kopēt no tālāk norādītajām saistītajām lapām vai no mūsu parauga darbgrāmatas un pēc tam ielīmēt savos Excel failos.

    Kā darbojas VBA RegExp funkcijas

    Šajā sadaļā ir izskaidrota iekšējā mehānika, un tā var būt interesanta tiem, kuri vēlas uzzināt, kas tieši notiek aizmugurē.

    Lai sāktu lietot regulārās izteiksmes VBA, ir vai nu jāaktivizē RegEx objektu atsauču bibliotēka, vai arī jāizmanto funkcija CreateObject. Lai izvairītos no rūpēm, kas saistītas ar atsauces iestatīšanu VBA redaktorā, mēs izvēlējāmies pēdējo pieeju.

    Objektam RegExp ir 4 īpašības:

    • Modelis - ir modelis jāatbilst ievades virknei.
    • Global - nosaka, vai ievades virknē jāatrod visi sakritības elementi vai tikai pirmais. Mūsu funkcijās tas ir iestatīts uz True, lai iegūtu. visas spēles .
    • MultiLine - nosaka, vai paraugs jāatrod visā rindu pārrāvumā daudzrindu virknēs vai tikai pirmajā rindā. Mūsu kodos tas ir iestatīts uz True, lai veiktu meklēšanu. katrā rindā .
    • IgnoreCase - nosaka, vai regulārā izteiksme ir lielo un mazo izmēru jutīga (noklusējuma iestatījums) vai lielo un mazo izmēru nejutīga (iestatīts uz True). Mūsu gadījumā tas ir atkarīgs no tā, kā konfigurēsiet izvēles iespēju match_case parametrs. Pēc noklusējuma visas funkcijas ir lielo un mazo izmēru .

    VBA RegExp ierobežojumi

    Excel VBA implementē galvenos regex modeļus, taču tajā nav daudzu uzlaboto funkciju, kas pieejamas .NET, Perl, Java un citos regex dzinējos. Piemēram, VBA RegExp neatbalsta iebūvētos modifikatorus, piemēram, (?i) lielo un mazo burtu un atbilžu noteikšanai vai (?m) vairāku rindu režīmam, Lookbehinds, POSIX klases un citus.

    Excel Regex atbilstības funkcija

    Portāls RegExpMatch funkcija meklē ievades virknē tekstu, kas atbilst regulārajai izteiksmei, un atgriež TRUE, ja ir atrasta atbilstība, un FALSE pretējā gadījumā.

    RegExpMatch(teksts, modelis, [match_case])

    Kur:

    • Teksts (obligāts) - viena vai vairākas meklēšanai izmantojamās virknes.
    • Modelis (obligāts) - regulārā izteiksme, kurai jāatbilst.
    • Match_case (nav obligāti) - atbilstības tips. TRUE vai izlaists - ja ir izšķirat mazo un lielo burtu un atbilžu tipu; FALSE - ja nav izšķirat mazo un lielo burtu un atbilžu tipu.

    Funkcijas kods ir šeit.

    Piemērs: kā izmantot regulārās izteiksmes, lai saskaņotu virknes

    Pieņemsim, ka turpmāk dotajā datu kopā vēlaties identificēt ierakstus, kas satur SKU kodus.

    Ņemot vērā, ka katrs SKU sākas ar 2 lielajiem burtiem, kam seko defise un 4 cipari, tos var saskaņot, izmantojot šādu izteiksmi.

    Modelis : \b[A-Z]{2}-\d{4}\b

    Kur [A-Z]{2} nozīmē jebkurus 2 lielos burtus no A līdz Z un \d{4} nozīmē jebkurus 4 ciparus no 0 līdz 9. Vārda robeža \b norāda, ka SKU ir atsevišķs vārds, nevis daļa no lielākas virknes.

    Kad modelis ir izveidots, sāciet rakstīt formulu kā parasti, un funkcijas nosaukums parādīsies sarakstā, ko piedāvā Excel automātiskā papildināšana:

    Pieņemot, ka sākotnējā virkne ir A5, formula ir šāda:

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    Ērtības labad regulāro izteiksmi varat ievadīt atsevišķā šūnā un izmantot absolūto atsauci ($A$2), lai modelis Tas nodrošina, ka šūnas adrese paliks nemainīga, kad formulu kopēsiet citās šūnās:

    =RegExpMatch(A5, $A$2)

    Lai TRUE un FALSE vietā attēlotu savas teksta norādes, funkciju RegExpMatch ievietojiet funkcijā IF un norādiet vēlamos tekstus. value_if_true un value_if_false argumenti:

    =IF(RegExpMatch(A5, $A$2), "Jā", "Nē")

    Vairāk formulu piemēru skatiet:

    • Kā saskaņot virknes, izmantojot regulārās izteiksmes
    • Excel datu validēšana ar regeksēm

    Excel regekss Izraksts funkcija

    Portāls RegExpExtract funkcija meklē apakšvirknes, kas atbilst regulārajai izteiksmei, un izraksta visas sakritības vai konkrētu sakritību.

    RegExpExtract(teksts, modelis, [instance_num], [match_case])

    Kur:

    • Teksts (obligāts) - teksta virkne, kurā jāveic meklēšana.
    • Modelis (obligāts) - regulārā izteiksme, kurai jāatbilst.
    • Instance_num (nav obligāts) - kārtas numurs, kas norāda, kuru gadījumu izvilkt. Ja netiek norādīts, tiek atgriezti visi atrastie sakritības gadījumi (noklusējuma iestatījums).
    • Match_case (nav obligāts) - nosaka, vai teksta burtus saskaņot (TRUE vai izlaists) vai ignorēt (FALSE).

    Funkcijas kodu varat iegūt šeit.

    Piemērs: kā iegūt virknes, izmantojot regulārās izteiksmes

    Turpinot mūsu piemēru, izvilksim rēķinu numurus. Šim nolūkam izmantosim ļoti vienkāršu regeksi, kas atbilst jebkuram 7 ciparu skaitlim:

    Modelis : \b\d{7}\b

    Ievietojiet modeli A2, un jūs paveiksiet darbu ar šo kompakto un eleganto formulu:

    =RegExpExtract(A5, $A$2)

    Ja tiek atrasts atbilstīgs modelis, formula iegūst rēķina numuru, ja atbilstība nav atrasta - netiek atgriezts nekas.

    Vairāk piemēru skatiet šādā sadaļā: Kā iegūt virknes programmā Excel, izmantojot regeksus.

    Excel Regex aizvietošanas funkcija

    Portāls RegExpReplace funkcija aizstāj regeksam atbilstošās vērtības ar norādīto tekstu.

    RegExpReplace(teksts, modelis, aizvietošana, [instance_num], [match_case])

    Kur:

    • Teksts (obligāts) - teksta virkne, kurā jāveic meklēšana.
    • Modelis (obligāts) - regulārā izteiksme, kurai jāatbilst.
    • Nomaiņa (obligāts) - teksts, ar kuru aizstāt atbilstošās apakšvirknes.
    • Instance_num (nav obligāti) - aizstājamais gadījums. Noklusējuma iestatījums ir "all matches".
    • Match_case (nav obligāts) - nosaka, vai teksta burtus saskaņot (TRUE vai izlaist) vai ignorēt (FALSE).

    Funkcijas kods ir pieejams šeit.

    Piemērs: kā aizstāt vai noņemt virknes, izmantojot regeksus

    Dažos mūsu ierakstos ir kredītkaršu numuri. Šī informācija ir konfidenciāla, un jūs, iespējams, vēlēsieties to aizstāt ar kādu citu vai pilnībā dzēst. Abus uzdevumus var veikt, izmantojot RegExpReplace Kā? Otrajā scenārijā mēs aizstāsim ar tukšu virkni.

    Mūsu parauga tabulā visiem karšu numuriem ir 16 cipari, kas ierakstīti 4 grupās, atdalot tās ar atstarpēm. Lai tos atrastu, atkārtojam modeli, izmantojot šo regulāro izteiksmi:

    Modelis : \b\d{4} \d{4} \d{4} \d{4} \d{4}\b

    Aizstāšanai tiek izmantota šāda virkne:

    Nomaiņa : XXXX XXXX XXXX XXXX XXXX XXXX

    Un šeit ir pilnīga formula, lai nomainīt kredītkaršu numurus ar neaizsargātu informāciju:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX XXXX XXXX XXXX")

    Ja regekss un aizstājējteksts atrodas atsevišķās šūnās (A2 un B2), formula darbojas vienlīdz labi:

    Programmā Excel "noņemšana" ir īpašs "aizstāšanas" gadījums. Lai noņemt kredītkaršu numurus, vienkārši izmantojiet tukšu virkni ("") kā aizvietošana arguments:

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

    Padoms. Lai rezultātos likvidētu tukšās rindas, varat izmantot citu RegExpReplace funkciju, kā parādīts šajā piemērā: Kā noņemt tukšās rindas, izmantojot regex.

    Lai uzzinātu vairāk, skatiet:

    • Kā aizstāt virknes programmā Excel, izmantojot regex
    • Kā noņemt virknes, izmantojot regex
    • Kā atdalīt baltos punktus, izmantojot regeksus

    Regex rīki, lai saskaņotu, izvilktu, aizstātu un noņemtu apakšrindas

    Mūsu Ultimate Suite lietotāji var izmantot visas regulāro izteicienu iespējas, neievietodot savās darbgrāmatās nevienu koda rindu. Visu vajadzīgo kodu ir uzrakstījuši mūsu izstrādātāji, un instalēšanas laikā tas ir vienmērīgi integrēts jūsu programmā Excel.

    Atšķirībā no iepriekš minētajām VBA funkcijām Ultimate Suite funkcijas ir balstītas uz .NET, kas sniedz divas galvenās priekšrocības:

    1. Regulārās izteiksmes var izmantot parastās .xlsx darbgrāmatās, nepievienojot VBA kodu un neglabājot tās kā makrofailus.
    2. .NET Regex dzinējs atbalsta pilnfunkcionālas klasiskās regulārās izteiksmes, kas ļauj konstruēt sarežģītākus modeļus.

    Kā lietot Regex programmā Excel

    Ja ir instalēts komplekts Ultimate Suite, regulāro izteicienu lietošana programmā Excel ir tikpat vienkārša kā šie divi soļi:

    1. Par Ablebits dati cilnē Teksts grupu, noklikšķiniet uz Regekses rīki .

    2. Par Regekses rīki panelī veiciet šādus darbības:
      • Atlasiet avota datus.
      • Ievadiet regeksas modeli.
      • Izvēlieties vēlamo opciju: Match , Izraksts , Noņemt vai Aizstāt .
      • Lai iegūtu rezultātu kā formulu, nevis kā vērtību, atlasiet Ievietot kā formulu izvēles rūtiņu.
      • Nospiediet darbības pogu.

      Piemēram, lai no A2:A6 šūnām noņemtu kredītkaršu numurus, konfigurējam šos iestatījumus:

    Pēc mirkļa AblebitsRegex funkcija tiks ievietota jaunā slejā pa labi no jūsu sākotnējiem datiem. Mūsu gadījumā formula ir:

    =AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")

    Kad formula ir izveidota, varat to rediģēt, kopēt vai pārvietot tāpat kā jebkuru citu vietējo formulu.

    Kā ievietot Regex formulu tieši šūnā

    AblebitsRegex funkcijas var ievietot arī tieši šūnā, neizmantojot papildinājuma interfeisu. Lūk, kā:

    1. Noklikšķiniet uz fx pogu formulas joslā vai Ievietot funkciju par Formulas cilne.
    2. In the Ievietot funkciju dialoglodziņā atlasiet AblebitsUDFs kategoriju, izvēlieties interesējošo funkciju un noklikšķiniet uz Labi.

    3. Definējiet funkcijas argumentus, kā parasti, un noklikšķiniet uz OK. Gatavs!

    Lai iegūtu vairāk informācijas, skatiet sadaļu Regex rīki programmai Excel.

    Lūk, kā izmantot regulārās izteiksmes, lai saskaņotu, izvilktu, aizstātu un noņemtu tekstu Excel šūnās. Paldies, ka izlasījāt, un ar nepacietību gaidām jūs mūsu blogā nākamnedēļ!

    Pieejamās lejupielādes

    Excel Regex - formulu piemēri (.xlsm fails)

    Ultimate Suite - izmēģinājuma versija (.exe fails)

    Maikls Brauns ir īpašs tehnoloģiju entuziasts, kura aizraušanās ir sarežģītu procesu vienkāršošana, izmantojot programmatūras rīkus. Ar vairāk nekā desmit gadu pieredzi tehnoloģiju nozarē viņš ir pilnveidojis savas prasmes programmās Microsoft Excel un Outlook, kā arī Google izklājlapās un dokumentos. Maikla emuārs ir veltīts tam, lai dalītos savās zināšanās un pieredzē ar citiem, sniedzot viegli izpildāmus padomus un pamācības produktivitātes un efektivitātes uzlabošanai. Neatkarīgi no tā, vai esat pieredzējis profesionālis vai iesācējs, Maikla emuārs piedāvā vērtīgas atziņas un praktiskus padomus, kā maksimāli izmantot šos būtiskos programmatūras rīkus.