Прыклады Excel RegEx: выкарыстанне рэгулярных выразаў у формулах

  • Падзяліцца Гэтым
Michael Brown

Ніколі не магу зразумець, чаму рэгулярныя выразы не падтрымліваюцца ў формулах Excel? Цяпер яны :) З дапамогай нашых карыстальніцкіх функцый вы можаце лёгка знаходзіць, замяняць, здабываць і выдаляць радкі, якія адпавядаюць пэўнаму шаблону.

На першы погляд, у Excel ёсць усё, што вам можа спатрэбіцца для тэкставага радка маніпуляцыі. Хм... а як наконт рэгулярных выразаў? На жаль, у Excel няма ўбудаваных функцый рэгулярных выразаў. Але ніхто не кажа, што мы не можам ствараць свае ўласныя :)

    Што такое рэгулярны выраз?

    Рэгулярны выраз (ён жа рэгулярны выраз або regexp ) - гэта спецыяльна закадзіраваная паслядоўнасць сімвалаў, якая вызначае шаблон пошуку. Выкарыстоўваючы гэты шаблон, вы можаце знайсці адпаведную камбінацыю сімвалаў у радку або праверыць уведзеныя даныя. Калі вы знаёмыя з сімваламі падстаноўкі, вы можаце разглядаць рэгулярныя выразы як пашыраную версію сімвалаў падстаноўкі.

    Рэгулярныя выразы маюць уласны сінтаксіс, які складаецца са спецыяльных сімвалаў, аператараў і канструкцый. Напрыклад, [0-5] адпавядае любой адной лічбе ад 0 да 5.

    Рэгулярныя выразы выкарыстоўваюцца ў многіх мовах праграмавання, уключаючы JavaScript і VBA. Апошні мае спецыяльны аб'ект RegExp, які мы будзем выкарыстоўваць для стварэння нашых уласных функцый.

    Ці падтрымлівае Excel рэгулярныя выразы?

    На жаль, у Excel няма ўбудаваных функцый рэгулярных выразаў. Каб мець магчымасць выкарыстоўваць рэгулярныя выразы ў вашых формулах, вам трэба будзе стварыць сваю ўласную вызначаную карыстальнікам функцыю (VBAаргументы:

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

    Больш прыкладаў формул глядзіце:

    • Як супаставіць радкі з дапамогай рэгулярных выразаў
    • Праверка даных Excel з рэгулярнымі выразамі

    Функцыя Excel Regex Extract

    Функцыя RegExpExtract шукае падрадкі, якія адпавядаюць рэгулярнаму выразу, і здабывае ўсе супадзенні або канкрэтнае супадзенне.

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

    Where:

    • Text (абавязкова) - тэкставы радок для пошуку in.
    • Шаблон (абавязкова) - рэгулярны выраз для супадзення.
    • Instance_num (неабавязкова) - парадкавы нумар, які паказвае, які асобнік трэба экстракт. Калі апушчана, вяртае ўсе знойдзеныя супадзенні (па змаўчанні).
    • Match_case (неабавязкова) - вызначае, ці трэба супадаць (TRUE або прапушчана) ці ігнараваць (FALSE) рэгістр тэксту.

    Вы можаце атрымаць код функцыі тут.

    Прыклад: як здабываць радкі з дапамогай рэгулярных выразаў

    Працягнуўшы наш прыклад, давайце выцягнем нумары рахункаў-фактур. Для гэтага мы будзем выкарыстоўваць вельмі просты рэгулярны выраз, які адпавядае любому 7-значнаму ліку:

    Шаблон : \b\d{7}\b

    Put шаблон у A2, і вы атрымаеце працу з дапамогай гэтай кампактнай і элегантнай формулы:

    =RegExpExtract(A5, $A$2)

    Калі шаблон супадае, формула вылучае нумар рахунку, калі супадзення не знойдзена - нічога не вяртаецца.

    Больш прыкладаў глядзіце: Як атрымаць радкі ў Excelз выкарыстаннем рэгулярных выразаў.

    Функцыя Excel Regex Replace

    Функцыя RegExpReplace замяняе значэнні, якія адпавядаюць рэгулярным выразам, тэкстам, які вы ўказваеце.

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

    Дзе:

    • Тэкст (абавязкова) - тэкставы радок для пошуку.
    • Шаблон (абавязкова) - рэгулярны выраз для супадзення.
    • Замена (абавязкова) - тэкст, якім трэба замяніць адпаведныя падрадкі.
    • Нумар_экземпляра (неабавязкова) - асобнік для замены. Па змаўчанні "усе супадае".
    • Match_case (неабавязкова) - кантралюе супадзенне (TRUE або прапушчана) або ігнараванне (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, як паказана ў гэтым прыкладзе: Як выдаліць пустыя радкі з дапамогай рэгулярнага выразу.

    Для атрымання дадатковай інфармацыі, калі ласка, гл.:

    • Як замяніць радкі ў Excel з дапамогай рэгулярных выразаў
    • Як выдаліць радкі з дапамогай рэгулярных выразаў
    • Як выдаліць прабелы з дапамогай рэгулярных выразаў

    Інструменты рэгулярных выразаў для супастаўлення, вылучэння , замяніць і выдаліць падрадкі

    Карыстальнікі нашага Ultimate Suite могуць атрымаць усю моц рэгулярных выразаў, не ўстаўляючы ніводнага радка кода ў свае кнігі. Увесь неабходны код напісаны нашымі распрацоўшчыкамі і гладка інтэграваны ў ваш Excel падчас усталявання.

    У адрозненне ад функцый VBA, разгледжаных вышэй, функцыі Ultimate Suite заснаваныя на .NET, што дае дзве асноўныя перавагі:

    1. Вы можаце выкарыстоўваць рэгулярныя выразы ў звычайных кнігах .xlsx без дадання кода VBA і неабходнасці захоўваць іх як файлы з падтрымкай макрасаў.
    2. .NET Regex Engine падтрымлівае поўнафункцыянальны класічнырэгулярныя выразы, якія дазваляюць ствараць больш складаныя шаблоны.

    Як выкарыстоўваць 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")

    Калі формула ёсць, вы можаце рэдагаваць, капіяваць або перамяшчаць яе, як любую родную формулу.

    Як уставіць формулу рэгулярнага выражэння непасрэдна ў ячэйку

    Функцыі AblebitsRegex таксама можна ўставіць непасрэдна ў ячэйку без выкарыстання інтэрфейсу надбудовы. Вось як:

    1. Націсніце кнопку fx у радку формул або Уставіць функцыю на ўкладцы Формулы .
    2. У дыялогавым акне Уставіць функцыю выберыце AblebitsUDFs катэгорыю, абярыце цікавую функцыю і націсніце OK.

    3. Вызначце аргументы функцыі, як звычайна, і націсніце OK. Гатова!

    Для атрымання дадатковай інфармацыі, калі ласка, глядзіце Інструменты рэгулярных выразаў для Excel.

    Гэта тое, як выкарыстоўваць рэгулярныя выразы для супастаўлення, здабывання, замены і выдалення тэксту ў ячэйках Excel. Я дзякую вам за чытанне і з нецярпеннем чакаю сустрэчы з вамі ў нашым блогу на наступным тыдні!

    Даступныя спампоўкі

    Excel Regex - прыклады формул (.xlsm файл)

    Ultimate Suite - пробная версія (файл .exe)

    або на аснове .NET) або ўсталюйце інструменты іншых вытворцаў, якія падтрымліваюць рэгулярныя выразы.

    Шпаргалка Excel Regex

    Незалежна ад таго, ці з'яўляецца шаблон рэгулярных выразаў вельмі простым або вельмі складаным, ён пабудаваны з выкарыстаннем агульнага сінтаксісу. Гэты падручнік не мае на мэце навучыць вас рэгулярным выразам. Для гэтага ёсць шмат рэсурсаў у інтэрнэце, ад бясплатных навучальных дапаможнікаў для пачаткоўцаў да прэміум-курсаў для прасунутых карыстальнікаў.

    Ніжэй мы прапануем кароткую спасылку на асноўныя шаблоны рэгулярных выразаў, якія дапамогуць вам зразумець асновы. Гэта таксама можа служыць вашай шпаргалкай пры вывучэнні далейшых прыкладаў.

    Калі вы добра карыстаецеся рэгулярнымі выразамі, вы можаце адразу перайсці да функцый RegExp.

    Сімбалі

    Гэтыя найбольш часта выкарыстоўваюцца шаблоны для супастаўлення пэўных сімвалаў.

    Шаблон Апісанне Прыклад Супадзенні
    . Сімвал падстаноўкі: адпавядае любому асобнаму сімвалу, акрамя разрыву радка .ot кропка , hot , pot , @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+\.

    Выключае кропку, каб вы маглі знайсці літарал "." сімвал у радку

    Mr. , Mrs. , Prof.

    Класы сімвалаў

    Выкарыстоўваючы гэтыя ўзоры, вы можаце супастаўляць элементы розных набораў сімвалаў.

    Узор Апісанне Прыклад Супадае
    [сімвалы] Супадае з любым асобным сімвалам у дужках d[oi]g сабака і капаць
    [^сімвалы] Супадае з любым сімвалам НЕ ў дужках d[^oi]g Супадае з dag, dug , d1g

    Не супадае з dog і dig

    [ад–да] Супадае з любым сімвалам у дыяпазоне паміждужкі [0-9]

    [a-z]

    [A-Z]

    Любая асобная лічба ад 0 да 9

    Любая асобная маленькая літара

    Любая асобная вялікая літара

    Квантары

    Квантары - гэта спецыяльныя выразы, якія вызначаюць колькасць сімвалаў для супадзення. Квантар заўсёды прымяняецца да сімвала перад ім.

    Шаблон Апісанне Прыклад Супадзенні
    * Нуль або больш выпадкаў 1a* 1, 1a , 1aa, 1aaa і г.д.
    + Адзін або некалькі ўваходжанняў po+ У pot , адпавядае po

    In poor , адпавядае poo

    ? Нуль або адно з'яўленне roa?d road, rod
    *? Нуль або больш выпадкаў, але як мага менш 1a*? У 1a , 1aa і 1aaa супадае 1a
    +? Адзін або больш выпадкаў, але як мага менш po+? У pot і poor супадае з 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)
    (?:шаблон) Група без захопу: супадае з групай, але не захоплівае яе (\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 - вызначае, адчувальны рэгулярны выраз да рэгістра (па змаўчанні) або да рэгістра неадчувальны (усталявана ў True). У нашым выпадку гэта залежыць ад таго, як вы наладжваеце дадатковы параметр match_case . Па змаўчанні ўсе функцыі адчувальныя да рэгістра .

    Абмежаванні VBA RegExp

    Excel VBA рэалізуе асноўныя шаблоны рэгулярных выразаў, але яму не хапае многіх дадатковых функцый даступны ў .NET, Perl, Java і іншых механізмах рэгулярных выразаў. Напрыклад, VBA RegExp не падтрымлівае ўбудаваныя мадыфікатары, такія як (?i) для супастаўлення без уліку рэгістра або (?m) для шматрадковага рэжыму, аглядныя дзеянні, класы POSIX, каб назваць некалькі.

    Excel Regex Функцыя супадзення

    Функцыя RegExpMatch шукае ва ўваходным радку тэкст, які адпавядае рэгулярнаму выразу, і вяртае TRUE, калі супадзенне знойдзена, і FALSE у адваротным выпадку.

    RegExpMatch(text, pattern, [ match_case])

    Дзе:

    • Тэкст (абавязкова) - адзін або некалькі радкоў для пошуку.
    • Шаблон ( патрабуецца) - звычайнывыраз для супадзення.
    • Match_case (неабавязкова) - тып супадзення. TRUE або прапушчана - улічвае рэгістр; ХЛУСНЯ - без уліку рэгістра

    Код функцыі знаходзіцца тут.

    Прыклад: як выкарыстоўваць рэгулярныя выразы для супастаўлення радкоў

    У наборы дадзеных ніжэй вы хочаце для ідэнтыфікацыі запісаў, якія змяшчаюць коды SKU.

    Улічваючы, што кожны SKU пачынаецца з 2 вялікіх літар, за якімі ідзе злучок і 4 лічбы, вы можаце супаставіць іх з дапамогай наступнага выразу.

    Шаблон : \b[A-Z]{2}-\d{4}\b

    Дзе [A-Z]{2} азначае любыя 2 вялікія літары ад A да Z і \d{4 } азначае любыя 4 лічбы ад 0 да 9. Мяжа слова \b паказвае, што SKU з'яўляецца асобным словам, а не часткай большага радка.

    Пасля ўстаноўленага шаблону пачніце ўводзіць формулу, як звычайна. , а назва функцыі з'явіцца ў спісе, прапанаваным аўтазапаўненнем Excel:

    Пры ўмове, што зыходны радок знаходзіцца ў фармаце A5, формула выглядае наступным чынам:

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

    Для зручнасці вы можаце ўвесці рэгулярны выраз у асобную ячэйку і выкарыстоўваць абсалютную спасылку ($A$2) для аргумента шаблона t. Гэта гарантуе, што адрас ячэйкі застанецца нязменным пры капіраванні формулы ў іншыя ячэйкі:

    =RegExpMatch(A5, $A$2)

    Каб адлюстраваць вашы ўласныя тэкставыя меткі замест TRUE і FALSE, укладзіце RegExpMatch у функцыю IF і укажыце жаданыя тэксты ў value_if_true і value_if_false плюс 5 дае 15 , адпавядае 15

    \b Мяжа слова \bjoy\b Супадае з joy як асобным словам, але не ў enjoyable . \B НЕ з'яўляецца мяжой слова \Bjoy\B Супадае з joy у enjoyable , але не як асобнае слова.

    Канструкцыя чаргавання (OR)

    Аперанд чаргавання ўключае логіку OR, так што вы можаце супаставіць той ці іншы элемент.

    Канструкцыя Апісанне Прыклад Супадзенні

    Майкл Браўн - адданы энтузіяст тэхналогій, які любіць спрашчэнне складаных працэсаў з дапамогай праграмных інструментаў. Маючы больш чым дзесяцігадовы досвед працы ў індустрыі тэхналогій, ён удасканальваў свае навыкі ў Microsoft Excel і Outlook, а таксама ў Google Sheets і Docs. Блог Майкла прысвечаны таму, каб падзяліцца сваімі ведамі і вопытам з іншымі, даючы простыя ў выкананні парады і падручнікі для павышэння прадукцыйнасці і эфектыўнасці. Незалежна ад таго, з'яўляецеся вы дасведчаным прафесіяналам або пачаткоўцам, блог Майкла прапануе каштоўную інфармацыю і практычныя парады, каб атрымаць максімальную аддачу ад гэтых неабходных праграмных інструментаў.