Excel RegEx példák: szabályos kifejezések használata képletekben

  • Ossza Meg Ezt
Michael Brown

Soha nem értette, hogy a reguláris kifejezések miért nem támogatottak az Excel-képletekben? Most már igen :) Egyéni függvényeinkkel könnyedén megtalálhatja, kicserélheti, kiveheti és eltávolíthatja a meghatározott mintának megfelelő karakterláncokat.

Első pillantásra az Excel mindent tartalmaz, amire csak szükségünk lehet a szöveges karakterláncok manipulálásához. Hmm... mi a helyzet a reguláris kifejezésekkel? Hoppá, az Excelben nincsenek beépített Regex függvények. De senki sem mondja, hogy nem tudunk sajátokat létrehozni :)

    Mi az a reguláris kifejezés?

    A reguláris kifejezés (más néven regex vagy regexp ) egy speciálisan kódolt karaktersorozat, amely egy keresési mintát határoz meg. A minta segítségével megkeresheti a megfelelő karakterkombinációt egy karakterláncban vagy érvényesítheti az adatbevitelt. Ha ismeri a joker jelölést, akkor a regexeket a jokerek továbbfejlesztett változatának tekintheti.

    A reguláris kifejezéseknek saját szintaxisa van, amely speciális karakterekből, operátorokból és szerkezetekből áll. Például a [0-5] bármely 0 és 5 közötti számjegyre illik.

    A reguláris kifejezéseket számos programozási nyelvben használják, beleértve a JavaScriptet és a VBA-t. Ez utóbbi rendelkezik egy speciális RegExp objektummal, amelyet az egyéni függvények létrehozásához fogunk használni.

    Támogatja az Excel a regexet?

    Sajnálatos módon az Excelben nincsenek beépített Regex-funkciók. Ahhoz, hogy a reguláris kifejezéseket a képletekben használhassa, saját felhasználó által definiált (VBA vagy .NET alapú) függvényt kell létrehoznia, vagy harmadik féltől származó, a regexeket támogató eszközöket kell telepítenie.

    Excel Regex puskázó lap

    Akár nagyon egyszerű, akár rendkívül bonyolult egy regex minta, a közös szintaxis alapján épül fel. Ennek a bemutatónak nem célja, hogy megtanítsa a reguláris kifejezéseket. Ehhez rengeteg forrás áll rendelkezésre az interneten, a kezdőknek szóló ingyenes oktatóprogramoktól a haladó felhasználóknak szóló prémium tanfolyamokig.

    Az alábbiakban egy gyors referenciát adunk a főbb RegEx mintákról, amely segít az alapok elsajátításában, és további példák tanulmányozásakor puskapéldaként is szolgálhat.

    Ha már ismeri a reguláris kifejezéseket, akkor egyenesen a RegExp függvényekhez ugorhat.

    Karakterek

    Ezek a leggyakrabban használt minták bizonyos karakterek megfeleltetésére.

    Mintázat Leírás Példa Gyufa
    . Wildcard karakter: bármely karakterrel megegyezik, kivéve a sortörést. .ot pont , hot , pot , @ot
    \d Számjegy karakter: 0 és 9 közötti bármelyik számjegy \d A oldalon. a1b , gyufa 1
    \D Bármely karakter, amely NEM számjegy \D A oldalon. a1b , gyufa a és b
    \s Üres hely karakter: szóköz, tabulátor, új sor és kocsivisszatérés .\s. A oldalon. 3 cent , gyufa 3 c
    \S Bármely nem szóköz karakter \S+ A oldalon. 30 cent , gyufa 30 és centek
    \w Szó karakter: bármely ASCII betű, számjegy vagy aláhúzás \w+ A oldalon. 5_cats*** , gyufa 5_cats
    \W Bármilyen karakter, amely NEM alfanumerikus karakter vagy aláhúzás \W+ A oldalon. 5_cats*** , gyufa ***
    \t Tab
    \n Új vonal \n\d+ Az alábbi kétsoros karakterláncban a 10 találat

    5 macska

    10 kutya

    \ Megszökik egy karakter speciális jelentése, így kereshetsz rá \.

    \w+\.

    Megkerüli a pontot, hogy megtalálhassa a szó szerinti "." karaktert egy karakterláncban.

    Mr. , Mrs. , Prof.

    Karakter osztályok

    Ezekkel a mintákkal különböző karakterkészletek elemei illeszthetők egymáshoz.

    Mintázat Leírás Példa Gyufa
    [karakterek] A zárójelben lévő bármelyik karakterre illeszkedik d[oi]g kutya és dig
    [^karakterek] Bármely, a zárójelben NEM szereplő karaktert egyezik. d[^oi]g Gyufa dag, dig , d1g

    Nem egyezik kutya és dig

    [from-to] A zárójelek közötti tartományban lévő bármely karakterre illeszkedik. [0-9]

    [a-z]

    [A-Z]

    Bármely 0 és 9 közötti számjegy

    Bármely kisbetűs betű

    Bármely nagybetűs betű

    Kvantorok

    A kvantorok olyan speciális kifejezések, amelyek megadják a megfeleltetendő karakterek számát. A kvantor mindig az előtte lévő karakterre vonatkozik.

    Mintázat Leírás Példa Gyufa
    * Nulla vagy több előfordulás 1a* 1, 1a , 1aa, 1aaa stb.
    + Egy vagy több előfordulás po+ A oldalon. pot , gyufa po

    A oldalon. szegény , gyufa poo

    ? Nulla vagy egy előfordulás roa?d út, rúd
    *? Nulla vagy több, de a lehető legkevesebb előfordulás. 1a*? A oldalon. 1a , 1aa és 1aaa , gyufa 1a
    +? Egy vagy több, de lehetőleg minél kevesebb előfordulás. po+? A oldalon. pot és szegény , gyufa po
    ?? Nulla vagy egy előfordulás, de minél kevesebb, amennyire lehetséges roa?? A oldalon. út és rúd , gyufa ro
    {n} Az előző mintával n-szer egyezik \d{3} Pontosan 3 számjegy
    {n,} Az előző mintát legalább n-szer egyezik meg. \d{3,} 3 vagy több számjegy
    {n,m} Az előző mintát n és m közötti alkalommal illeszti be. \d{3,5} 3-tól 5 számjegyig

    Csoportosítás

    A csoportosítási konstrukciókat arra használjuk, hogy a forrás karakterláncból egy részláncot ragadjunk ki, hogy valamilyen műveletet hajthassunk végre vele.

    Szintaxis Leírás Példa Gyufa
    (minta) Rögzítő csoport: rögzíti az egyező részláncot, és rendel hozzá egy rendszámot. (\d+) A oldalon. 5 macska és 10 kutya , elfogja 5 (1. csoport) és 10 (2. csoport)
    (?:pattern) Nem rögzítő csoport: egyezik egy csoporttal, de nem rögzíti azt. (\d+)(?: kutyák) A oldalon. 5 macska és 10 kutya , elfogja 10
    \1 Az 1. csoport tartalma (\d+)\+(\d+)=\2\+\1 Egyezik 5+10=10+5 és rögzíti 5 és 10 , amelyek elfogó csoportokba vannak foglalva
    \2 A 2. csoport tartalma

    Horgonyok

    A horgonyok megadnak egy pozíciót a bemeneti karakterláncban, ahol egyezést kell keresni.

    Anchor Leírás Példa Gyufa
    ^ A karakterlánc kezdete

    Megjegyzés: [^zárójelben] azt jelenti, hogy "nem".

    ^\d+ A karakterlánc elején lévő számjegyek tetszőleges száma.

    A oldalon. 5 macska és 10 kutya , gyufa 5

    $ A karakterlánc vége \d+$ Bármennyi számjegy a karakterlánc végén.

    A oldalon. 10 plusz 5 adja a 15-öt , gyufa 15

    \b Szóhatár \bjoy\b Gyufa joy külön szó, de nem a élvezetes .
    \B NEM szóhatár \Bjoy\B Gyufa joy a oldalon. élvezetes , de nem külön szóval.

    Alternációs (OR) konstrukció

    A váltakozó operandus lehetővé teszi a VAGY logikát, így vagy erre, vagy arra az elemre illeszthető.

    Construct Leírás Példa Gyufa
    Egyezik bármelyik függőleges vonallal elválasztott elemmel. (s A oldalon. kagylókat árul, megfelel eladja és kagylók

    Look-arounds

    A Lookaround-konstrukciók akkor hasznosak, ha olyan dolgot akarunk megfeleltetni, amelyet valami más követ vagy megelőz. Ezeket a kifejezéseket néha "nulla szélességű állításnak" vagy "nulla szélességű egyezésnek" is nevezik, mivel nem tényleges karakterekre, hanem egy pozícióra illeszkednek.

    Megjegyzés: A VBA RegEx ízében a lookbehinds nem támogatott.

    Mintázat Leírás Példa Gyufa
    (?=) Pozitív előretekintés X(?=Y) Egyezik az X kifejezéssel, ha azt Y követi (azaz ha X előtt Y van).
    (?!) Negatív előretekintés X(?!Y) Egyezik az X kifejezéssel, ha azt NEM követi az Y kifejezés
    (?<=) Pozitív lookbehind (?<=Y)X Egyezik az X kifejezéssel, ha azt Y előzi meg (azaz ha X mögött Y van).
    (? )</td Negatív lookbehind (? Y)X</td Az X kifejezésre illeszkedik, ha NEM előzi meg az Y kifejezés.

    Most, hogy már ismered az alapokat, térjünk rá a legérdekesebb részre - a regexek használatára valós adatokon a karakterláncok elemzésére és a szükséges információk megtalálására. Ha további részletekre van szükséged a szintaxisról, a Microsoft Regular Expression Language című útmutatója hasznos lehet.

    Egyéni RegEx függvények az Excel számára

    Mint már említettük, a Microsoft Excel nem rendelkezik beépített RegEx függvényekkel. A reguláris kifejezések engedélyezéséhez három egyéni VBA függvényt (más néven felhasználó által definiált függvényeket) hoztunk létre. A kódokat az alább linkelt oldalakról vagy a mintamunkafüzetünkből másolhatja ki, majd beillesztheti a saját Excel fájljaiba.

    A VBA RegExp függvények működése

    Ez a rész a belső mechanikát magyarázza el, és érdekes lehet azok számára, akik szeretnék tudni, hogy pontosan mi történik a backendben.

    Ahhoz, hogy elkezdhessük a reguláris kifejezések használatát a VBA-ban, vagy aktiválnunk kell a RegEx objektumhivatkozási könyvtárat, vagy a CreateObject függvényt kell használnunk. Hogy megspóroljuk a hivatkozás beállításának fáradságát a VBA-szerkesztőben, az utóbbi megközelítést választottuk.

    A RegExp objektum 4 tulajdonsággal rendelkezik:

    • Mintázat - a minta a bemeneti karakterláncban.
    • Globális - szabályozza, hogy az összes találatot keressük-e a bemeneti karakterláncban, vagy csak az elsőt. A mi függvényeinkben True értékre van állítva, hogy a következő eredményt kapjuk minden mérkőzés .
    • MultiLine - határozza meg, hogy a többsoros karakterláncoknál a mintát a sortöréseken keresztül, vagy csak az első sorban keressük-e. A mi kódjainkban True értékre van állítva, hogy a keresés minden sorban .
    • IgnoreCase - határozza meg, hogy a reguláris kifejezés eset-érzékeny (alapértelmezett) vagy eset-érzéketlen (True értékre állítva) legyen-e. Esetünkben ez attól függ, hogy az opcionális match_case alapértelmezés szerint az összes függvény case-sensitive .

    VBA RegExp korlátozások

    Az Excel VBA megvalósítja az alapvető regex mintákat, de számos olyan fejlett funkció hiányzik belőle, amely a .NET, Perl, Java és más regex motorokban elérhető. Például a VBA RegExp nem támogatja az olyan soron belüli módosítókat, mint a (?i) a nagy- és kisbetű-független megfeleltetéshez vagy a (?m) a többsoros módhoz, a lookbehinds, a POSIX osztályok, hogy csak néhányat említsünk.

    Excel Regex Match funkció

    A RegExpMatch függvény egy bemeneti karakterláncban keres olyan szöveget, amely megfelel egy reguláris kifejezésnek, és TRUE-t ad vissza, ha talál egyezést, ellenkező esetben FALSE-t.

    RegExpMatch(text, pattern, [match_case])

    Hol:

    • Szöveg (kötelező) - egy vagy több karakterlánc a kereséshez.
    • Mintázat (kötelező) - az egyezni kívánt reguláris kifejezés.
    • Match_case (opcionális) - az egyezés típusa. TRUE vagy elhagyva - nagy- és kisbetű-érzékeny; FALSE - nagy- és kisbetű-érzéketlen.

    A funkció kódja itt található.

    Példa: a reguláris kifejezések használata karakterláncok egyeztetésére

    Tegyük fel, hogy az alábbi adatkészletben a SKU-kódokat tartalmazó bejegyzéseket szeretné azonosítani.

    Mivel minden SKU 2 nagybetűvel kezdődik, amelyet egy kötőjel, majd 4 számjegy követ, a következő kifejezéssel egyezhet meg.

    Mintázat : \b[A-Z]{2}-\d{4}\b

    Ahol [A-Z]{2} bármely 2 nagybetűt jelent A-tól Z-ig, \d{4} pedig bármely 4 számjegyet 0-tól 9-ig. A \b szóhatár azt jelzi, hogy egy SKU külön szó, és nem egy nagyobb karakterlánc része.

    A minta létrehozásával kezdjen el beírni egy képletet, ahogyan általában szokta, és a függvény neve megjelenik az Excel automatikus kitöltése által javasolt listában:

    Feltételezve, hogy az eredeti karakterlánc az A5-ben van, a képlet a következőképpen néz ki:

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

    Az egyszerűség kedvéért a reguláris kifejezést külön cellába is beírhatja, és abszolút hivatkozást ($A$2) használhat a minta Ez biztosítja, hogy a cella címe változatlan marad, amikor a képletet más cellákba másolja:

    =RegExpMatch(A5, $A$2)

    Ha a TRUE és FALSE helyett saját szöveges címkéket szeretne megjeleníteni, fészkelje be a RegExpMatch-et az IF függvénybe, és adja meg a kívánt szövegeket az IF függvényben. value_if_true és value_if_false érvek:

    =IF(RegExpMatch(A5, $A$2), "Igen", "Nem")

    További képletpéldákért lásd:

    • Hogyan illesszünk össze karakterláncokat reguláris kifejezésekkel
    • Excel adatérvényesítés regexekkel

    Excel Regex kivonat funkció

    A RegExpExtract függvény olyan részláncokat keres, amelyek megfelelnek egy reguláris kifejezésnek, és kivonja az összes egyezést vagy egy adott egyezést.

    RegExpExtract(text, pattern, [instance_num], [match_case])

    Hol:

    • Szöveg (kötelező) - a keresendő szöveges karakterlánc.
    • Mintázat (kötelező) - az egyezni kívánt reguláris kifejezés.
    • Instance_num (opcionális) - egy sorszám, amely jelzi, hogy melyik példányt kell kinyerni. Ha elhagyja, az összes talált egyezést adja vissza (alapértelmezett).
    • Match_case (opcionális) - meghatározza, hogy a szöveg nagy- és kisbetűinek megfeleljen-e (TRUE vagy elhagyva) vagy figyelmen kívül hagyja (FALSE).

    A függvény kódját itt találja.

    Példa: a karakterláncok kivonása reguláris kifejezésekkel

    A példánkat egy kicsit tovább folytatva, vegyük ki a számlaszámokat. Ehhez egy nagyon egyszerű regexet fogunk használni, amely bármely 7 számjegyű számmal megegyezik:

    Mintázat : \b\d{7}\b

    Tegye a mintát A2-be, és ezzel a kompakt és elegáns formulával elvégezheti a munkát:

    =RegExpExtract(A5, $A$2)

    Ha a minta egyezik, a képlet kivon egy számlaszámot, ha nem talál egyezést, akkor a rendszer nem ad vissza semmit.

    További példákért lásd: Hogyan lehet karakterláncokat kivonni az Excelben a regex segítségével.

    Excel Regex Replace funkció

    A RegExpReplace függvény a regexnek megfelelő értékeket a megadott szöveggel helyettesíti.

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

    Hol:

    • Szöveg (kötelező) - a keresendő szöveges karakterlánc.
    • Mintázat (kötelező) - az egyezni kívánt reguláris kifejezés.
    • Csere (kötelező) - a szöveg, amellyel a megfelelő részsorokat helyettesíteni kell.
    • Instance_num (opcionális) - a cserélendő példány. Az alapértelmezett érték az "összes egyezés".
    • Match_case (opcionális) - szabályozza, hogy a szöveg nagy- és kisbetűinek megfeleljen-e (TRUE vagy elhagyva) vagy figyelmen kívül hagyja (FALSE).

    A funkció kódja itt érhető el.

    Példa: hogyan lehet karakterláncokat helyettesíteni vagy eltávolítani regexek használatával

    Néhány nyilvántartásunk hitelkártyaszámokat tartalmaz. Ezek az információk bizalmasak, és lehet, hogy valamivel helyettesíteni szeretné őket, vagy teljesen törölni. Mindkét feladatot a RegExpReplace A második forgatókönyvben egy üres karakterlánccal fogjuk helyettesíteni.

    A mintatáblázatunkban az összes kártyaszám 16 számjegyből áll, amelyek 4 csoportban, szóközzel elválasztva vannak leírva. Ezek megtalálásához a mintát megismételjük a következő reguláris kifejezéssel:

    Mintázat : \b\d{4} \d{4} \d{4} \d{4} \d{4}\b

    A helyettesítéshez a következő karakterláncot használjuk:

    Csere : XXXX XXXX XXXX XXXX XXXX XXXX

    És itt van egy teljes képlet a cserélje ki a hitelkártyaszámok érzéketlen információkkal:

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

    Ha a regex és a helyettesítő szöveg külön cellákban (A2 és B2) van, a képlet ugyanolyan jól működik:

    Az Excelben az "eltávolítás" a "helyettesítés" egy speciális esete. to távolítsa el a hitelkártya számok, csak egy üres karakterláncot ("") használjon a csere érv:

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

    Tipp: Az üres sorok eltávolításához az eredményekben használhat egy másik RegExpReplace függvényt, ahogyan az ebben a példában látható: Hogyan távolítsuk el az üres sorokat regex segítségével.

    További információkért lásd:

    • Hogyan cserélje ki a karakterláncokat az Excelben a regex használatával
    • Hogyan távolítsunk el karakterláncokat regex használatával
    • Hogyan távolítsuk el a szóközöket regexek használatával?

    Regex eszközök a részláncok egyezéséhez, kivonásához, cseréjéhez és eltávolításához

    Az Ultimate Suite felhasználóink a reguláris kifejezések minden erejét megkapják anélkül, hogy egyetlen sor kódot is be kellene illeszteniük a munkafüzetükbe. Az összes szükséges kódot fejlesztőink írják, és a telepítés során simán beépítik az Excelbe.

    A fentebb tárgyalt VBA függvényekkel ellentétben az Ultimate Suite függvényei .NET alapúak, ami két fő előnnyel jár:

    1. A szabályos kifejezéseket normál .xlsx munkafüzetekben is használhatja anélkül, hogy VBA-kódot kellene hozzáadnia, és makróként kellene elmentenie őket.
    2. A .NET Regex motor támogatja a teljes körű klasszikus reguláris kifejezéseket, amelyek segítségével kifinomultabb mintákat is létrehozhat.

    Hogyan használjuk a Regexet az Excelben

    Az Ultimate Suite telepítésével a reguláris kifejezések használata az Excelben olyan egyszerű, mint ez a két lépés:

    1. A Ablebits adatok lapon, a Szöveg csoport, kattintson a Regex eszközök .

    2. A Regex eszközök ablaktáblán a következőket tegye:
      • Válassza ki a forrásadatokat.
      • Adja meg a regex mintát.
      • Válassza ki a kívánt opciót: Match , Kivonat , Távolítsa el a vagy Cserélje ki a címet. .
      • Ha az eredményt képletként és nem értékként szeretné megkapni, válassza a Beillesztés képletként jelölőnégyzet.
      • Nyomja meg az akció gombot.

      Például a hitelkártyaszámok A2:A6 cellákból történő eltávolításához a következő beállításokat kell megadnunk:

    Egy pillanat alatt egy AblebitsRegex függvényt illeszt be egy új oszlopba az eredeti adatoktól jobbra. A mi esetünkben a képlet a következő:

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

    Ha a képlet már megvan, szerkesztheti, másolhatja vagy áthelyezheti, mint bármely natív képletet.

    Regex-képlet beszúrása közvetlenül egy cellába

    Az AblebitsRegex függvények közvetlenül is beilleszthetők egy cellába anélkül, hogy a bővítmény felületét használnánk. Íme, hogyan:

    1. Kattintson a fx gomb a képletsoron vagy Beillesztési funkció a Képletek tab.
    2. A Beillesztési funkció párbeszédpanelen válassza ki a AblebitsUDFs kategória, válassza ki a kívánt funkciót, és kattintson az OK gombra.

    3. Adja meg a függvény argumentumait a szokásos módon, és kattintson az OK gombra. Kész!

    További információért lásd a Regex Tools for Excel című részt.

    Így használhatod a reguláris kifejezéseket az Excel-cellák szövegének megfeleltetésére, kivonására, cseréjére és eltávolítására. Köszönöm, hogy elolvastad, és várom, hogy találkozzunk a blogunkon a jövő héten!

    Elérhető letöltések

    Excel Regex - képlet példák (.xlsm fájl)

    Ultimate Suite - próbaverzió (.exe fájl)

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.