Екцел РегЕк примери: коришћење регуларних израза у формулама

  • Деле Ово
Michael Brown

Никад не разумем зашто регуларни изрази нису подржани у Екцел формулама? Сада јесу :) Са нашим прилагођеним функцијама, можете лако да пронађете, замените, издвојите и уклоните стрингове који одговарају одређеном шаблону.

На први поглед, Екцел има све што вам може затребати за текстуални низ манипулације. Хм... шта је са регуларним изразима? Упс, у Екцелу нема уграђених функција Регек. Али нико не каже да не можемо да креирамо сопствене :)

    Шта је регуларни израз?

    Регуларни израз (ака регек или регекп ) је посебно кодирани низ знакова који дефинише образац претраге. Користећи тај образац, можете пронаћи одговарајућу комбинацију знакова у низу или потврдити унос података. Ако сте упознати са џокер ознакама, можете да замислите регуларне изразе као напредну верзију џокер знакова.

    Регуларни изрази имају сопствену синтаксу која се састоји од специјалних знакова, оператора и конструкција. На пример, [0-5] одговара било којој појединачној цифри од 0 до 5.

    Регуларни изрази се користе у многим програмским језицима укључујући ЈаваСцрипт и ВБА. Овај други има посебан РегЕкп објекат, који ћемо користити за креирање наших прилагођених функција.

    Да ли Екцел подржава регек?

    Нажалост, у Екцел-у нема уграђених функција Регек. Да бисте могли да користите регуларне изразе у својим формулама, мораћете да креирате сопствену кориснички дефинисану функцију (ВБАаргументи:

    =IF(RegExpMatch(A5, $A$2), "Yes", "No")

    За више примера формула, погледајте:

    • Како ускладити стрингове користећи регуларне изразе
    • Екцел Валидација података са регексима

    Екцел функција издвајања регуларног израза

    Функција РегЕкпЕктрацт претражује подстрингове који се подударају са регуларним изразом и издваја сва подударања или специфично подударање.

    РегЕкпЕктрацт(текст, образац, [број_инстанце], [матцх_цасе])

    Где:

    • Текст (обавезно) - текстуални низ за претрагу ин.
    • Шаблон (обавезно) – регуларни израз за подударање.
    • Број_инстанце (опционо) – серијски број који указује на коју инстанцу треба екстракт. Ако је изостављен, враћа сва пронађена подударања (подразумевано).
    • Матцх_цасе (опционо) - дефинише да ли ће се подударати (ТРУЕ или изостављено) или игнорисати (ФАЛСЕ) велика и мала слова текста.

    Овде можете добити код функције.

    Пример: како издвојити стрингове користећи регуларне изразе

    Узмимо наш пример мало даље, хајде да издвојимо бројеве фактура. За ово ћемо користити веома једноставан регуларни израз који одговара било ком 7-цифреном броју:

    Образац : \б\д{7}\б

    Стави образац у А2 и обавићете посао са овом компактном и елегантном формулом:

    =RegExpExtract(A5, $A$2)

    Ако се образац подудара, формула издваја број фактуре, ако није пронађено подударање - ништа се не враћа.

    За више примера, погледајте: Како издвојити стрингове у Екцел-укористећи регек.

    Екцел Регек Реплаце фунцтион

    Функција РегЕкпРеплаце замењује вредности које одговарају редовном изразу са текстом који наведете.

    РегЕкпРеплаце(тект, паттерн, реплацемент , [инстанце_нум], [матцх_цасе])

    Где:

    • Тект (обавезно) - текстуални низ за претрагу.
    • Образац (обавезно) – регуларни израз за подударање.
    • Замена (обавезно) – текст за замену одговарајућих подстрингова.
    • Број_инстанце (опционо) - инстанца коју треба заменити. Подразумевано је "сва подударања".
    • Матцх_цасе (опционо) - контролише да ли ће се подударати (ТРУЕ или изостављено) или игнорисати (ФАЛСЕ) велика и мала слова текста.

    Код функције је доступан овде.

    Пример: како заменити или уклонити низове помоћу регуларних израза

    Неки од наших записа садрже бројеве кредитних картица. Ове информације су поверљиве и можда ћете желети да их замените нечим или да их потпуно избришете. Оба задатка се могу извршити уз помоћ функције РегЕкпРеплаце . Како? У другом сценарију, заменићемо празним стрингом.

    У нашој табели узорка, сви бројеви картица имају 16 цифара, које су написане у 4 групе одвојене размацима. Да бисмо их пронашли, реплицирамо образац користећи овај регуларни израз:

    Образац : \б\д{4} \д{4} \д{4} \д{4}\ б

    За замену се користи следећи низ:

    Замена : КСКСКСКС КСКСКСКС КСКСКСКСКСКСКСКС

    И ево комплетне формуле за замену бројева кредитних картица неосетљивим информацијама:

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

    Са регуларним изразом и заменским текстом у одвојеним ћелијама ( А2 и Б2), формула функционише подједнако добро:

    У Екцел-у, „уклањање“ је посебан случај „замене“. Да бисте уклонили бројеве кредитних картица, само користите празан стринг ("") за аргумент замена :

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

    Савет. Да бисте добили испоруку празних линија у резултатима, можете користити другу функцију РегЕкпРеплаце као што је приказано у овом примеру: Како уклонити празне редове користећи регек.

    За више информација погледајте:

    • Како заменити стрингове у Екцел-у користећи регек
    • Како уклонити низове користећи регек
    • Како уклонити размак користећи регекс

    Регек алатке за подударање, издвајање , замените и уклоните подстрингове

    Корисници нашег Ултимате Суите-а могу добити сву моћ регуларних израза без уметања ни једног реда кода у своје радне свеске. Сав потребан код су написали наши програмери и глатко га интегрисали у ваш Екцел током инсталације.

    За разлику од ВБА функција о којима смо горе говорили, функције Ултимате Суите-а су засноване на .НЕТ-у, што даје две главне предности:

    1. Можете да користите регуларне изразе у нормалним .клск радним свескама без додавања било каквог ВБА кода и без потребе да их сачувате као датотеке са омогућеним макроима.
    2. .НЕТ Регек механизам подржава класични класичнирегуларне изразе, који вам омогућавају да конструишете софистицираније обрасце.

    Како да користите Регек у Екцел-у

    Са инсталираним пакетом Ултимате Суите, коришћење регуларних израза у Екцел-у је једноставно као ова два корака :

    1. На картици Аблебитс Дата , у групи Тект , кликните на Регек Тоолс .

    2. У окну Регек Тоолс урадите следеће:
      • Изаберите изворне податке.
      • Унесите образац регуларног израза.
      • Изаберите жељену опцију: Матцх , Ектрацт , Ремове или Реплаце .
      • Да бисте добили резултат као формула, а не вредност, потврдите избор у пољу за потврду Убаци као формулу .
      • Притисните дугме за радњу.

      На пример, да бисте уклонили бројеве кредитних картица из ћелија А2:А6, конфигуришемо ова подешавања:

    У једном тренутку, функција АблебитсРегек ће бити уметнута у нову колону десно од оригинала података. У нашем случају, формула је:

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

    Када је формула тамо, можете је уређивати, копирати или премештати као било коју изворну формулу.

    Како уметнути формулу редовног израза директно у ћелију

    Функције АблебитсРегек се такође могу уметнути директно у ћелију без коришћења интерфејса програмског додатка. Ево како:

    1. Кликните на дугме фк на траци формуле или Убаци функцију на картици Формуле .
    2. У дијалогу Инсерт Фунцтион изаберите АблебитсУДФс категорију, изаберите функцију од интереса и кликните на ОК.

    3. Дефинишите аргументе функције као што то иначе радите и кликните на ОК. Готово!

    За више информација погледајте Регек Тоолс за Екцел.

    Тако користите регуларне изразе за подударање, издвајање, замену и уклањање текста у Екцел ћелијама. Захваљујем вам на читању и радујем се што ћу вас видети на нашем блогу следеће недеље!

    Доступна преузимања

    Екцел Регек - примери формула (.клсм датотека)

    Ултимате Суите - пробна верзија (.еке датотека)

    или базиран на .НЕТ) или инсталирајте алате треће стране који подржавају регуларне изразе.

    Екцел Регек цхеат схеет

    Било да је образац регуларног израза веома једноставан или изузетно софистициран, направљен је коришћењем уобичајене синтаксе. Овај водич нема за циљ да вас научи регуларним изразима. За ово постоји много ресурса на мрежи, од бесплатних туторијала за почетнике до премијум курсева за напредне кориснике.

    У наставку дајемо кратку референцу на главне обрасце РегЕк-а који ће вам помоћи да схватите основе. Такође може да функционише као ваша табла за варање када проучавате даље примере.

    Ако вам одговара регуларни изрази, можете да пређете директно на функције РегЕкп.

    Знакови

    Ови су најчешће коришћени обрасци који одговарају одређеним знаковима.

    Образац Опис Пример Подудара се
    . Замјенски знак: одговара било којем појединачном знаку осим пријелома реда .от тачка , вруће , лонац , @от
    Знак цифре: било која појединачна цифра од 0 до 9 У а1б , одговара 1
    Сваки знак који НИЈЕ цифра У а1б , одговара а и б
    Знак размака: размак, табулатор, нови ред и повратак на ред .\с. У 3 цента , одговара 3 ц
    Било којизнак без размака \С+ У 30 центи , одговара 30 и центи
    Знак речи: било које АСЦИИ слово, цифра или доња црта \в+ У 5_цатс*** , одговара 5_цатс
    Било који знак који НИЈЕ алфанумерички знак или доња црта \В+ У 5_цатс*** , одговара ***
    Таб
    Нови ред \н\д+ У дворедни низ испод, одговара 10

    5 мачака

    10 паса

    \ Избегава посебно значење карактера, тако да можете тражи га \.

    \в+\.

    Избегава тачку да бисте могли да пронађете буквално "." знак у низу

    Господин , Госпођа , Проф.

    Класе знакова

    Користећи ове обрасце, можете да ускладите елементе различитих скупова знакова.

    Шаблон Опис Пример Одговара
    [знакова] Одговара било којем појединачном знаку у заградама д[ои]г дог и диг
    [^знакови] Поклапа се са било којим појединачним знаком НЕ у заградама д[^ои]г Одговара даг, дуг , д1г

    Не одговара пас и диг

    [од–до] Подудара се са било којим знаком у опсегу измеђузаграде [0-9]

    [а-з]

    [А-З]

    Било која појединачна цифра од 0 до 9

    Свако једно мало слово

    Било које једно велико слово

    Квантификатори

    Квантификатори су посебни изрази који одређују број знакова који се подударају. Квантификатор се увек примењује на карактер испред њега.

    Образац Опис Пример Поклапа се
    * Нула или више појављивања 1а* 1, 1а , 1аа, 1ааа итд.
    + Једно или више појављивања по+ У пот , одговара по

    У лоше , одговара поо

    ? Нула или једна појава роа?д пут, штап
    *? Нула или више појављивања, али што је мање могуће 1а*? У , 1аа и 1ааа , подудара се
    +? Једно или више појављивања, али што је мање могуће по+? У пот и лоше , одговара по
    ?? Нула или једна појава , али што мање роа?? У пут и род , одговара ро
    {н} Поклапа се са претходним шаблоном н пута \д{3} Тачно 3 цифре
    {н ,} Поклапа се са претходним шаблоном н или више пута \д{3,} 3 или више цифара
    {н,м} Одговарапретходни образац између н и м пута \д{3,5} Од 3 до 5 цифара

    Груписање

    Конструкције груписања се користе за хватање подниза из изворног низа, тако да можете да извршите неке операције са њим.

    Синтакса Опис Пример Подудара
    (образац) Група за снимање: хвата одговарајући подниз и додељује му редни број (\д+) У 5 мачака и 10 паса , снима 5 (група 1) и 10 (група 2)
    (?:паттерн) Група која не хвата: одговара групи, али је не снима (\д+)(?: пси) У 5 мачака и 10 паса , снима 10
    \1 Садржај групе 1 (\д+)\+(\д+)=\2\+\1 Одговара 5+10=10+5 и обухвата 5 и 10 , који се налазе у групама хватања
    \2 Садржај групе 2

    Сидра

    Сидра одређују позицију у улазном низу где треба тражити подударање.

    Сидро Опис Пример Подударања
    ^ Почетак низа

    Напомена: [^унутрашње заграде] значи „не“

    ^\д+ Било који број цифара на почетак низа.

    У 5 мачака и 10 паса , одговара 5

    $ Крај низа \д+$ Било који број цифара на крају стринга.

    У 10И

    (?&лт;=) Позитиван поглед иза (?&лт;=И)Кс Одговара изразу Кс када му претходи И (тј. ако постоји И иза Кс)
    (? Негативни поглед иза (? Одговара изразу Кс када му НЕ претходи И

    Сада када знате суштину, пређимо на најинтересантнији део – коришћење регуларних израза на стварним подацима за рашчлањивање стрингова и проналажење потребних информација. Ако вам треба више детаља о синтакси, Мицрософт водич о језику регуларних израза може се показати од помоћи.

    Прилагођене функције регуларног израза за Екцел

    Као што је већ поменуто, Мицрософт Екцел нема уграђене РегЕк функције. Да бисмо омогућили регуларне изразе, креирали смо три прилагођене ВБА функције (кориснички дефинисане функције). Можете да копирате кодове са страница доле или из нашег узорка радну свеску, а затим налепите своје Екцел датотеке.

    Како функционишу ВБА РегЕкп функције

    Овај одељак објашњава унутрашњу механику и може бити инт упућујем онима који желе да знају шта се тачно дешава у позадини.

    Да бисте почели да користите регуларне изразе у ВБА, морате или да активирате библиотеку референци РегЕк објеката или користите функцију ЦреатеОбјецт. Да бисмо вам уштедели невоље са постављањем референце у ВБА едитору, изабрали смо други приступ.

    РегЕкп објекат има 4 својства:

    • Шаблон - је образац за подударање у улазном низу.
    • Глобално - контролише да ли ће се пронаћи сва подударања у улазном низу или само прва. У нашим функцијама је подешено на Тачно да би се добило сва подударања .
    • МултиЛине - одређује да ли ће се подударати са шаблоном у преломима редова у низовима са више редова или само у првом реду. У нашим кодовима, подешено је на Труе за претрагу у сваком реду .
    • ИгнореЦасе - дефинише да ли је регуларни израз осетљив на велика и мала слова (подразумевано) или велика и мала слова- неосетљив (подешен на Труе). У нашем случају, то зависи од тога како конфигуришете опциони параметар матцх_цасе . Подразумевано, све функције су осетљиве на велика и мала слова .

    ВБА РегЕкп ограничења

    Екцел ВБА примењује основне обрасце регуларних израза, али му недостају многе напредне функције доступно у .НЕТ, Перл, Јава и другим регек машинама. На пример, ВБА РегЕкп не подржава уграђене модификаторе као што је (?и) за подударање без обзира на велика и мала слова или (?м) за вишелинијски режим, лоокбехиндс, ПОСИКС класе, да споменемо само неке.

    Екцел Регек Функција подударања

    Функција РегЕкпМатцх претражује улазни низ за текст који одговара регуларном изразу и враћа ТРУЕ ако је пронађено подударање, а у супротном ФАЛСЕ.

    РегЕкпМатцх(тект, паттерн, [ матцх_цасе])

    Где:

    • Текст (обавезно) - један или више стрингова за претрагу.
    • Образац ( обавезно) - редовноизраз за подударање.
    • Матцх_цасе (опционо) - тип подударања. ТРУЕ или изостављено - разликује велика и мала слова; ФАЛСЕ – не разликује велика и мала слова

    Код функције је овде.

    Пример: како да користите регуларне изразе за подударање стрингова

    У доњем скупу података, претпоставимо да желите да бисте идентификовали уносе који садрже СКУ кодове.

    С обзиром да сваки СКУ почиње са 2 велика слова, праћена цртицом, праћеном 4 цифре, можете их упарити помоћу следећег израза.

    Образац : \б[А-З]{2}-\д{4}\б

    Где [А-З]{2} означава било која 2 велика слова од А до З и \д{4 } значи било које 4 цифре од 0 до 9. Граница речи \б означава да је СКУ засебна реч, а не део већег низа.

    Са успостављеним шаблоном, почните да куцате формулу као што иначе радите , а име функције ће се појавити на листи коју је предложио Екцел-ов АутоЦомплете:

    Под претпоставком да је оригинални стринг у А5, формула иде на следећи начин:

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

    Ради практичности, можете унети регуларни израз у посебну ћелију и користити апсолутну референцу ($А$2) за аргумент паттерн т. Ово осигурава да ће адреса ћелије остати непромењена када копирате формулу у друге ћелије:

    =RegExpMatch(A5, $A$2)

    Да бисте приказали сопствене текстуалне ознаке уместо ТРУЕ и ФАЛСЕ, угнездите РегЕкпМатцх у функцију ИФ и наведите жељене текстове у валуе_иф_труе и валуе_иф_фалсе плус 5 даје 15 , одговара 15

    \б Граница речи \бјои\б Одговара радост као засебну реч, али не у уживавајући . \Б НИЈЕ граница речи \Бјои\Б Одговара радост у угодан , али не као посебна реч.

    Конструкција алтернације (ИЛИ)

    Операнд алтернације омогућава логику ИЛИ, тако да можете да упарите овај или онај елемент.

    Конструкција Опис Пример Подударања

    Мајкл Браун је посвећен технолошки ентузијаста са страшћу за поједностављење сложених процеса помоћу софтверских алата. Са више од деценије искуства у технолошкој индустрији, усавршио је своје вештине у Мицрософт Екцел-у и Оутлоок-у, као и у Гоогле табеле и документима. Мајклов блог посвећен је дељењу свог знања и стручности са другима, пружајући једноставне савете и упутства за побољшање продуктивности и ефикасности. Без обзира да ли сте искусан професионалац или почетник, Мајклов блог нуди вредне увиде и практичне савете како да на најбољи начин искористите ове основне софтверске алате.