Excel RegEx примери: користење на регуларни изрази во формули

  • Споделете Го Ова
Michael Brown

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

На прв поглед, Excel има сè што некогаш може да ви треба за текстуална низа манипулации. Хм... што е со регуларните изрази? Упс, нема вградени Regex функции во Excel. Но, никој не вели дека не можеме да создадеме свои :)

    Што е редовен израз?

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

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

    Редовните изрази се користат во многу програмски јазици, вклучувајќи JavaScript и VBA. Вториот има посебен објект RegExp, кој ќе го користиме за да ги креираме нашите сопствени функции.

    Дали Excel поддржува regex?

    За жал, нема вградени функции Regex во Excel. За да можете да користите регуларни изрази во вашите формули, ќе треба да креирате своја сопствена функција дефинирана од корисникот (VBAаргументи:

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

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

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

    Функција Excel Regex Extract

    Функцијата RegExpExtract бара поднизи што одговараат на регуларен израз и ги извлекува сите совпаѓања или специфично совпаѓање.

    RegExpExtract(текст, шема, [instance_num], [match_case])

    Каде:

    • Текст (задолжително) - текстуалната низа за пребарување in.
    • Шема (задолжително) - редовниот израз што треба да се совпадне.
    • Instance_num (изборно) - сериски број што покажува кој пример да екстракт. Ако се испушти, ги враќа сите пронајдени совпаѓања (стандардно).
    • Match_case (изборно) - дефинира дали да се совпаѓа (TRUE или испуштено) или да се игнорира (FALSE) буквите на текстот.

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

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

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

    Шема : \b\d{7}\b

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

    =RegExpExtract(A5, $A$2)

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

    За повеќе примери, погледнете: Како да извлечете низи во Excelкористејќи regex.

    Excel Regex Replace функција

    Функцијата RegExpReplace ги заменува вредностите што одговараат на regex со текстот што го наведовте.

    RegExpReplace(текст, шема, замена , [instance_num], [match_case])

    Каде:

    • Текст (задолжително) - текстуалната низа за пребарување.
    • Шема (задолжително) - регуларниот израз што треба да се совпадне.
    • Замена (задолжително) - текстот со кој се заменуваат соодветните поднизи.
    • Пример_број (опционално) - примерот што треба да се замени. Стандардно е „сите совпаѓања“.
    • Match_case (изборно) - контролира дали да се совпадне (ТОЧНО или испуштено) или да се игнорира (FALSE) буквите со текст.

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

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

    Некои од нашите записи содржат броеви на кредитни картички. Оваа информација е доверлива и можеби ќе сакате да ја замените со нешто или целосно да ја избришете. Двете задачи може да се остварат со помош на функцијата RegExpReplace . Како? Во второто сценарио, ќе го замениме со празен стринг.

    Во нашата примерок табела, сите броеви на картички имаат 16 цифри, кои се напишани во 4 групи одделени со празни места. За да ги најдеме, ја реплицираме шемата користејќи го овој редовен израз:

    Шема : \b\d{4} \d{4} \d{4} \d{4}\ b

    За замена, се користи следнава низа:

    Замена : XXXX XXXX XXXXXXXX

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

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

    Со регекс и заменет текст во посебни ќелии ( A2 и B2), формулата работи подеднакво добро:

    Во Excel, „отстранување“ е посебен случај на „замена“. За отстранување броеви на кредитни картички, само користете празна низа ("") за аргументот замена :

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

    Совет. За да добиете монтажа на празни линии во резултатите, можете да користите друга функција RegExpReplace како што е прикажано во овој пример: Како да отстраните празни линии користејќи regex.

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

    • Како да ги замените низите во Excel користејќи regex
    • Како да ги отстраните низите користејќи regex
    • Како да го отстраните празното место користејќи regex

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

    Корисниците на нашиот Ultimate Suite можат да ја добијат целата моќ на регуларни изрази без да вметнат ниту една линија код во нивните работни книги. Целиот неопходен код е напишан од нашите програмери и непречено интегриран во вашиот Excel за време на инсталацијата.

    За разлика од функциите на VBA дискутирани погоре, функциите на Ultimate Suite се базирани на .NET, што дава две главни предности:

    1. Можете да користите редовни изрази во нормални работни книги .xlsx без да додавате никаков VBA код и да морате да ги зачувате како датотеки со макро-овозможени.
    2. . NET Regex моторот поддржува класичен со целосни функцииредовни изрази, што ви овозможува да конструирате пософистицирани обрасци.

    Како да користите Regex во Excel

    Со инсталиран Ultimate Suite, користењето редовни изрази во Excel е едноставно како овие два чекори :

    1. На картичката Ablebits Data , во групата Text , кликнете Regex Tools .

    2. На окното Регекс Алатки , направете го следново:
      • Изберете ги изворните податоци.
      • Внесете ја вашата регекс шема.
      • Изберете ја саканата опција: Соклопи , Извади , Отстрани или Замени .
      • За да го добиете резултатот како формула, а не вредност, изберете го полето за избор Вметни како формула .
      • Притиснете го копчето за дејство.

      На пример, за да ги отстраните броевите на кредитните картички од ќелиите A2:A6, ги конфигурираме овие поставки:

    За кратко време, функцијата AblebitsRegex ќе биде вметната во нова колона десно од вашиот оригинал податоци. Во нашиот случај, формулата е:

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

    Штом формулата ќе се најде таму, можете да ја уредувате, копирате или преместувате како која било домашна формула.

    Како да се вметне формула за Regex директно во ќелија

    Функциите AblebitsRegex исто така може да се вметнат директно во ќелија без користење на интерфејсот на додатокот. Еве како:

    1. Кликнете на копчето fx на лентата со формули или Вметни функција на јазичето Формули .
    2. Во полето за дијалог Вметни функција , изберете го AblebitsUDFs категорија, изберете ја функцијата од интерес и кликнете OK.

    3. Дефинирајте ги аргументите на функцијата како што обично правите и кликнете OK. Готово!

    За повеќе информации, ве молиме погледнете ги Алатките Regex за Excel.

    Така се користат редовни изрази за усогласување, екстракција, замена и отстранување на текст во ќелиите на Excel. Ви благодарам што прочитавте и со нетрпение очекувам да се видиме на нашиот блог следната недела!

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

    Excel Regex - примери на формула (.xlsm датотека)

    Ultimate Suite - пробна верзија (датотека .exe)

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

    Excel Regex мамечки лист

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

    Подолу нудиме брза референца за главните шеми на RegEx што ќе ви помогнат да ги разберете основите. Може да работи и како ваш лист за измама кога проучувате понатамошни примери.

    Ако ви е удобно со регуларни изрази, можете да скокнете директно до функциите RegExp.

    Ликови

    Овие се најчесто користените обрасци за да се совпаднат одредени знаци.

    Шема Опис Пример Поклопува
    . Булден знак: одговара на кој било знак освен прекин на линијата .ot точка , жешко , тенџере , @ot
    \d Цифрен знак: која било едноцифрена од 0 до 9 \d Во a1b , се совпаѓа со 1
    \D Секој знак што НЕ е цифра \D Во a1b , се совпаѓа со a и b
    \s Клик на празно место: празно место, јазиче, нова линија и превоз се враќаат .\s. Во 3 центи , се совпаѓа со 3 c
    \S Било коезнак без празно место \S+ Во 30 центи , се совпаѓа со 30 и центи
    \w Клик на збор: која било буква, цифра или долна црта ASCII \w+ Во 5_cats*** , се совпаѓа со 5_cats
    \W Секој знак што НЕ е алфанумерички знак или долна црта \W+ Во 5_cats*** , се совпаѓа со ***
    \t Tab
    \n Нова линија \n\d+ Во дворедна низата долу, одговара 10

    5 мачки

    10 кучиња

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

    \w+\.

    Избегнува точка за да можеш да го најдеш буквалното „." знак во низа

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

    Класи на знаци

    Користејќи ги овие обрасци, можете да поклопите елементи од различни множества знаци.

    Шема Опис Пример Се совпаѓа
    [знаци] Се совпаѓа со кој било знак во заградите d[oi]g dog и dig
    [^ликови] Се совпаѓа со кој било знак НЕ во заградите d[^oi]g Се поклопува dag, dug , d1g

    Не се совпаѓа со куче и копа

    [од–до] Се совпаѓа со кој било знак во опсегот помеѓузагради [0-9]

    [a-z]

    [A-Z]

    Било една цифра од 0 до 9

    Секоја мала буква

    Секоја голема буква

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

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

    Шема Опис Пример Поклопува
    * Нула или повеќе појави 1a* 1, 1a , 1aa, 1aaa итн.
    + Една или повеќе појави po+ Во тенџере , одговара по

    Во сиромашно , се совпаѓа пу

    ? Нула или една појава roa?d пат, прачка
    *? Нула или повеќе појави, но колку што е можно помалку 1a*? Во 1a , 1aa и 1aaa , се совпаѓаат 1a
    +? Една или повеќе појави, но колку што е можно помалку po+? Во тенџере и сиромашно , се совпаѓа со po
    ?? Нула или една појава , но колку што е можно помалку roa?? Во road и rod , се совпаѓа со ro
    {n} Се совпаѓа со претходната шема n пати \d{3} Точно 3 цифри
    {н ,} Се совпаѓа со претходната шема n или повеќе пати \d{3,} 3 или повеќе цифри
    {n,m} Се совпаѓа сопретходна шема помеѓу n и m пати \d{3,5} Од 3 до 5 цифри

    Групирање

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

    Синтакса Опис Пример Поклопува
    (шема) Група за сликање: снима соодветна подниза и ѝ доделува реден број (\d+) Кај 5 мачки и 10 кучиња , снима 5 (група 1) и 10 (група 2)
    (?:pattern) Група што не заробува: одговара на група, но не ја фаќа (\d+)(?: кучиња) Во 5 мачки и 10 кучиња , снима 10
    \1 Содржина на групата 1 (\d+)\+(\d+)=\2\+\1 Се совпаѓа со 5+10=10+5 и снима 5 и 10 , кои се во фаќање групи
    \2 Содржина на групата 2

    Сидра

    Сидра одредуваат позиција во влезната низа каде да се бара натпревар.

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

    Забелешка: [^внатрешни загради] значи „не“

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

    Во 5 мачки и 10 кучиња , се совпаѓа со 5

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

    Во 10Y

    (?<=) Позитивен поглед зад себе (?<=Y)X Се совпаѓа со изразот X кога му претходи Y (т.е. ако има Y зад X)
    (? Негативен поглед зад себе (? Се совпаѓа со изразот X кога НЕ му претходи Y

    Сега кога ги знаете суштинските работи, да преминеме на најинтересниот дел - користење регекси на вистински податоци за да се анализираат низите и да се најдат потребните информации. Ако ви требаат повеќе детали за синтаксата, водичот на Microsoft за регуларен јазик на изразување може да се покаже како корисен.

    Прилагодени функции RegEx за Excel

    Како што веќе беше споменато, Microsoft Excel нема вградени RegEx функции. За да овозможиме редовни изрази, создадовме три сопствени VBA функции (наречени функции дефинирани од корисникот). Можете да ги копирате шифрите од страниците поврзани подолу или од нашиот примерок работна книга, а потоа залепете во вашите сопствени датотеки на Excel.

    Како функционираат функциите на VBA RegExp

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

    За да започнете со користење на регуларни изрази во VBA, треба или да ја активирате референтната библиотека на објекти RegEx или да ја користите функцијата CreateObject. За да ве спасиме од проблемите со поставување на референцата во уредникот VBA, го избравме вториот пристап.

    Објектот RegExp има 4 својства:

    • Шема - е шема за да се совпадне во влезната низа.
    • Глобална - контролира дали да се најдат сите совпаѓања во влезната низа или само првата. Во нашите функции, таа е поставена на True за да се добијат сите совпаѓања .
    • Multiline - одредува дали да се совпадне шаблонот преку прекините на линиите во низи со повеќе линии или само во првата линија. Во нашите кодови, тој е поставен на True за пребарување во секоја линија .
    • IgnoreCase - дефинира дали регуларниот израз е чувствителен на големи букви (стандардно) или букви- нечувствителен (поставен на Точно). Во нашиот случај, тоа зависи од тоа како ќе го конфигурирате опционалниот параметар match_case . Стандардно, сите функции се чувствителни на мали букви .

    Ограничувања на VBA RegExp

    Excel VBA ги имплементира основните шеми на регекс, но му недостасуваат многу напредни функции достапни во .NET, Perl, Java и други regex мотори. На пример, VBA RegExp не поддржува вградени модификатори како што се (?i) за совпаѓање со големи букви или (?m) за режим со повеќе линии, lookbehinds, класи на POSIX, за да именуваме неколку.

    Excel Regex Функција за совпаѓање

    Функцијата RegExpMatch бара влезна низа за текст што одговара на регуларен израз и враќа ТОЧНО ако се најде совпаѓање, НЕТОЧНО во спротивно.

    RegExpMatch(текст, шема, [ match_case])

    Каде:

    • Текст (задолжително) - една или повеќе низи за пребарување.
    • Шема ( потребно) - редовниотизраз за совпаѓање.
    • Случај_совпаѓање (изборно) - тип на совпаѓање. ТОЧНО или испуштено - чувствително на големи букви; FALSE - неосетливи на големи букви

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

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

    Во долунаведената база на податоци, да претпоставиме дека сакате за да ги идентификувате записите што содржат SKU кодови.

    Со оглед на тоа што секој SKU започнува со 2 големи букви, проследено со цртичка, проследено со 4 цифри, можете да ги совпаднете користејќи го следниов израз.

    Шема : \b[A-Z]{2}-\d{4}\b

    Каде што [A-Z]{2} значи кои било 2 големи букви од A до Z и \d{4 } значи кои било 4 цифри од 0 до 9. Границата на зборот \b покажува дека SKU е посебен збор и не е дел од поголема низа.

    Со воспоставената шема, почнете да пишувате формула како што обично правите , а името на функцијата ќе се појави во списокот предложен од AutoComplete на Excel:

    Претпоставувајќи дека оригиналната низа е во A5, формулата оди како што следува:

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

    За погодност, можете да го внесете регуларниот израз во посебна ќелија и да користите апсолутна референца ($A$2) за аргументот шаблон т. Ова осигурува дека адресата на ќелијата ќе остане непроменета кога ќе ја копирате формулата во други ќелии:

    =RegExpMatch(A5, $A$2)

    За прикажување на вашите сопствени текстуални етикети наместо TRUE и FALSE, вметнете го RegExpMatch во функцијата IF и наведете ги саканите текстови во value_if_true и value_if_false плус 5 дава 15 , се совпаѓа со 15

    \b Граница на зборот \bjoy\b Се совпаѓа со радост како посебен збор, но не и во пријатно . \B НЕ е граница на збор \Bjoy\B Се совпаѓа со радост во пријатно , но не како посебен збор.

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

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

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

    Мајкл Браун е посветен технолошки ентузијаст со страст за поедноставување на сложените процеси користејќи софтверски алатки. Со повеќе од една деценија искуство во технолошката индустрија, тој ги усоврши своите вештини во Microsoft Excel и Outlook, како и Google Sheets и Docs. Блогот на Мајкл е посветен на споделување на своето знаење и експертиза со другите, обезбедувајќи лесни за следење совети и упатства за подобрување на продуктивноста и ефикасноста. Без разлика дали сте искусен професионалец или почетник, блогот на Мајкл нуди вредни сознанија и практични совети за да го извлечете максимумот од овие основни софтверски алатки.