Mga halimbawa ng Excel RegEx: gamit ang mga regular na expression sa mga formula

  • Ibahagi Ito
Michael Brown

Hindi kailanman maunawaan kung bakit hindi sinusuportahan ang mga regular na expression sa mga formula ng Excel? Ngayon, sila na :) Sa aming mga custom na function, madali mong mahahanap, mapapalitan, ma-extract at matanggal ang mga string na tumutugma sa isang partikular na pattern.

Sa unang tingin, nasa Excel ang lahat ng bagay na maaari mong kailanganin para sa text string. mga manipulasyon. Hmm... paano naman ang mga regular na expression? Oops, walang built-in na Regex function sa Excel. Ngunit walang nagsasabing hindi tayo makakagawa ng sarili natin :)

    Ano ang regular na expression?

    Isang regular na expression (aka regex o regexp ) ay isang espesyal na naka-encode na pagkakasunud-sunod ng mga character na tumutukoy sa isang pattern ng paghahanap. Gamit ang pattern na iyon, makakahanap ka ng katugmang kumbinasyon ng character sa isang string o i-validate ang input ng data. Kung pamilyar ka sa isang wildcard notation, maaari mong isipin ang mga regex bilang advanced na bersyon ng mga wildcard.

    Ang mga regular na expression ay may sariling syntax na binubuo ng mga espesyal na character, operator, at construct. Halimbawa, ang [0-5] ay tumutugma sa anumang solong digit mula 0 hanggang 5.

    Ang mga regular na expression ay ginagamit sa maraming programming language kabilang ang JavaScript at VBA. Ang huli ay may espesyal na RegExp object, na gagamitin namin upang lumikha ng aming mga custom na function.

    Sinusuportahan ba ng Excel ang regex?

    Sa kasamaang palad, walang mga inbuilt na Regex function sa Excel. Upang magamit ang mga regular na expression sa iyong mga formula, kakailanganin mong lumikha ng iyong sariling function na tinukoy ng gumagamit (VBAmga argumento:

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

    Para sa higit pang mga halimbawa ng formula, pakitingnan ang:

    • Paano itugma ang mga string gamit ang mga regular na expression
    • Excel Data Validation with regexes

    Excel Regex Extract function

    Ang RegExpExtract function ay naghahanap ng mga substring na tumutugma sa isang regular na expression at nag-extract ng lahat ng tugma o partikular na tugma.

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

    Saan:

    • Text (kinakailangan) - ang text string na hahanapin sa.
    • Pattern (kinakailangan) - ang regular na expression upang tumugma.
    • Instance_num (opsyonal) - isang serial number na nagsasaad kung aling instance ang katas. Kung aalisin, ibabalik ang lahat ng nahanap na tugma (default).
    • Match_case (opsyonal) - tinutukoy kung tutugma (TRUE o aalis) o huwag pansinin ang (FALSE) text case.

    Maaari mong makuha ang code ng function dito.

    Halimbawa: kung paano mag-extract ng mga string gamit ang mga regular na expression

    Kung gagawin pa ang ating halimbawa, kunin natin ang mga numero ng invoice. Para dito, gagamit kami ng napakasimpleng regex na tumutugma sa anumang 7-digit na numero:

    Pattern : \b\d{7}\b

    Put ang pattern sa A2 at matatapos mo ang trabaho gamit ang compact at eleganteng formula na ito:

    =RegExpExtract(A5, $A$2)

    Kung tumugma ang isang pattern, kukuha ang formula ng numero ng invoice, kung walang nakitang tugma - walang ibinalik.

    Para sa higit pang mga halimbawa, pakitingnan ang: Paano mag-extract ng mga string sa Excelgamit ang regex.

    Excel Regex Replace function

    Pinapalitan ng RegExpReplace ang mga value na tumutugma sa isang regex sa text na iyong tinukoy.

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

    Saan:

    • Text (kinakailangan) - ang text string na hahanapin.
    • Pattern (kinakailangan) - ang regular na expression upang tumugma.
    • Palitan (kinakailangan) - ang text na papalitan ng tumutugmang mga substring.
    • Instance_num (opsyonal) - ang instance na papalitan. Ang default ay "lahat ng mga tugma".
    • Match_case (opsyonal) - kinokontrol kung tutugma (TRUE o aalisin) o huwag pansinin ang (FALSE) text case.

    Ang code ng function ay available dito.

    Halimbawa: kung paano palitan o alisin ang mga string gamit ang mga regexe

    Ang ilan sa aming mga talaan ay naglalaman ng mga numero ng credit card. Ang impormasyong ito ay kumpidensyal, at maaaring gusto mong palitan ito ng isang bagay o tanggalin nang buo. Ang parehong mga gawain ay maaaring magawa sa tulong ng RegExpReplace function. Paano? Sa pangalawang senaryo, papalitan namin ng walang laman na string.

    Sa aming sample na talahanayan, lahat ng numero ng card ay may 16 na digit, na nakasulat sa 4 na pangkat na pinaghihiwalay ng mga puwang. Upang mahanap ang mga ito, ginagaya namin ang pattern gamit ang regular na expression na ito:

    Pattern : \b\d{4} \d{4} \d{4} \d{4}\ b

    Para sa pagpapalit, ang sumusunod na string ay ginagamit:

    Palitan : XXXX XXXX XXXXXXXX

    At narito ang kumpletong formula para palitan ang mga numero ng credit card ng hindi sensitibong impormasyon:

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

    Gamit ang regex at kapalit na text sa magkahiwalay na mga cell ( A2 at B2), pantay na gumagana ang formula:

    Sa Excel, ang "pag-alis" ay isang partikular na kaso ng "pagpapalit." Upang alisin ang mga numero ng credit card, gumamit lang ng walang laman na string ("") para sa argumentong kapalit :

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

    Tip. Upang makakuha ng rig ng mga walang laman na linya sa mga resulta, maaari kang gumamit ng isa pang RegExpReplace function tulad ng ipinapakita sa halimbawang ito: Paano mag-alis ng mga blangkong linya gamit ang regex.

    Para sa higit pang impormasyon, pakitingnan ang:

    • Paano palitan ang mga string sa Excel gamit ang regex
    • Paano mag-alis ng mga string gamit ang regex
    • Paano tanggalin ang whitespace gamit ang mga regexe

    Regex Tools upang itugma, i-extract , palitan at alisin ang mga substring

    Makukuha ng mga user ng aming Ultimate Suite ang lahat ng kapangyarihan ng mga regular na expression nang hindi naglalagay ng isang linya ng code sa kanilang mga workbook. Ang lahat ng kinakailangang code ay isinulat ng aming mga developer at makinis na isinama sa iyong Excel sa panahon ng pag-install.

    Hindi tulad ng mga function ng VBA na tinalakay sa itaas, ang mga function ng Ultimate Suite ay batay sa .NET, na nagbibigay ng dalawang pangunahing bentahe:

    1. Maaari kang gumamit ng mga regular na expression sa mga normal na .xlsx na workbook nang hindi nagdaragdag ng anumang VBA code at kinakailangang i-save ang mga ito bilang mga macro-enabled na file.
    2. . Sinusuportahan ng NET Regex engine ang buong tampok na classicmga regular na expression, na nagbibigay-daan sa iyong bumuo ng mga mas sopistikadong pattern.

    Paano gamitin ang Regex sa Excel

    Sa naka-install na Ultimate Suite, ang paggamit ng mga regular na expression sa Excel ay kasing simple ng dalawang hakbang na ito :

    1. Sa tab na Ablebits Data , sa grupong Text , i-click ang Regex Tools .

    2. Sa pane ng Regex Tools , gawin ang sumusunod:
      • Piliin ang source data.
      • Ilagay ang iyong regex pattern.
      • Piliin ang gustong opsyon: Itugma , I-extract , Alisin o Palitan .
      • Upang makuha ang resulta bilang formula at hindi value, piliin ang check box na Ipasok bilang formula .
      • Pindutin ang action button.

      Halimbawa, upang alisin ang mga numero ng credit card mula sa mga cell A2:A6, iko-configure namin ang mga setting na ito:

    Sa isang trice, isang AblebitsRegex function ang ipapasok sa isang bagong column sa kanan ng iyong orihinal datos. Sa aming kaso, ang formula ay:

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

    Kapag naroon na ang formula, maaari mo itong i-edit, kopyahin o ilipat tulad ng anumang katutubong formula.

    Paano direktang magpasok ng Regex formula sa isang cell

    Maaari ding direktang ipasok ang mga function ng AblebitsRegex sa isang cell nang hindi gumagamit ng interface ng add-in. Ganito:

    1. I-click ang button na fx sa formula bar o Insert Function sa tab na Formulas .
    2. Sa dialog box na Insert Function , piliin ang AblebitsUDFs kategorya, piliin ang function ng interes, at i-click ang OK.

    3. Tukuyin ang mga argumento ng function tulad ng karaniwan mong ginagawa at i-click ang OK. Tapos na!

    Para sa higit pang impormasyon, pakitingnan ang Regex Tools para sa Excel.

    Ganyan ang paggamit ng mga regular na expression upang itugma, i-extract, palitan at alisin ang text sa mga cell ng Excel. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!

    Mga available na download

    Excel Regex - mga halimbawa ng formula (.xlsm file)

    Ultimate Suite - trial na bersyon (.exe file)

    o .NET based) o mag-install ng mga third-party na tool na sumusuporta sa mga regexe.

    Excel Regex cheat sheet

    Napakasimple o napaka-sopistikado man ng regex pattern, ito ay binuo gamit ang karaniwang syntax. Ang tutorial na ito ay hindi naglalayong magturo sa iyo ng mga regular na expression. Para dito, maraming mapagkukunan online, mula sa mga libreng tutorial para sa mga nagsisimula hanggang sa mga premium na kurso para sa mga advanced na user.

    Sa ibaba ay nagbibigay kami ng mabilis na sanggunian sa mga pangunahing pattern ng RegEx na makakatulong sa iyong maunawaan ang mga pangunahing kaalaman. Maaari rin itong gumana bilang iyong cheat sheet kapag nag-aaral ng mga karagdagang halimbawa.

    Kung komportable ka sa mga regular na expression, maaari kang dumiretso sa mga function ng RegExp.

    Mga Character

    Ang mga ito ay ang pinakamadalas na ginagamit na pattern upang tumugma sa ilang partikular na character.

    Pattern Paglalarawan Halimbawa Mga Tugma
    . Wildcard na character: tumutugma sa anumang solong character maliban sa isang line break .ot tuldok , mainit , palayok , @ot
    \d Digit na character: anumang solong digit mula 0 hanggang 9 \d Sa a1b , tumutugma sa 1
    \D Anumang character na HINDI isang digit \D Sa a1b , tumutugma sa a at b
    \s Whitespace na character: space, tab, bagong linya at carriage return .\s. Sa 3 cents , tumutugma sa 3 c
    \S Anumangnon-whitespace na character \S+ Sa 30 cents , tumutugma sa 30 at cents
    \w Word character: anumang ASCII letter, digit o underscore \w+ Sa 5_cats*** , tumutugma sa 5_cats
    \W Anumang character na HINDI alphanumeric character o underscore \W+ Sa 5_cats*** , tumutugma sa ***
    \t Tab
    \n Bagong linya \n\d+ Sa dalawang linya string sa ibaba, tumutugma sa 10

    5 pusa

    10 aso

    \ Umiiwas sa espesyal na kahulugan ng isang character, para magawa mo hanapin ito \.

    \w+\.

    Umalis sa isang tuldok para mahanap mo ang literal na "." character sa isang string

    Mr. , Mrs. , Prof.

    Mga klase ng character

    Gamit ang mga pattern na ito, maaari mong itugma ang mga elemento ng iba't ibang set ng character.

    Pattern Paglalarawan Halimbawa Tumutugma
    [mga character] Tumutugma sa anumang solong character sa mga bracket d[oi]g aso at hukay
    [^character] Tumutugma sa alinmang character na HINDI sa mga bracket d[^oi]g Mga tugma dag, dug , d1g

    Hindi tumutugma sa aso at hukay

    [from–to] Tumutugma sa anumang character sa hanay sa pagitan ngmga bracket [0-9]

    [a-z]

    [A-Z]

    Anumang solong digit mula 0 hanggang 9

    Anumang solong maliit na titik

    Anumang solong malalaking titik

    Mga Quantifier

    Ang mga Quantifier ay mga espesyal na expression na tumutukoy sa bilang ng mga character na tutugma. Palaging nalalapat ang isang quantifier sa character bago nito.

    Pattern Paglalarawan Halimbawa Mga Tugma
    * Zero o higit pang mga pangyayari 1a* 1, 1a , 1aa, 1aaa , atbp.
    + Isa o higit pang mga pangyayari po+ Sa pot , tumutugma sa po

    Sa mahina , tumutugma sa poo

    ? Zero o isang pangyayari roa?d daan, baras
    *? Zero o higit pang mga pangyayari, ngunit mas kaunti hangga't maaari 1a*? Sa 1a , 1aa at 1aaa , magkatugma 1a
    +? Isa o higit pang mga pangyayari, ngunit mas kaunti hangga't maaari po+? Sa pot at mahina , tumutugma sa po
    ?? Zero o isang pangyayari , ngunit mas kaunti hangga't maaari roa?? Sa daan at rod , tumutugma sa ro
    {n} Tumutugma sa naunang pattern ng n beses \d{3} Eksaktong 3 digit
    {n ,} Tumutugma sa naunang pattern n o higit pang beses \d{3,} 3 o higit pang mga digit
    {n,m} Tumutugma sanaunang pattern sa pagitan ng n at m na beses \d{3,5} Mula 3 hanggang 5 digit

    Pagpapangkat

    Grouping construct ay ginagamit upang kumuha ng isang substring mula sa source string, kaya maaari kang magsagawa ng ilang operasyon gamit ito.

    Syntax Paglalarawan Halimbawa Mga Tugma
    (pattern) Pangkat sa pag-capture: kumukuha ng katugmang substring at itinalaga ito ng ordinal na numero (\d+) Sa 5 pusa at 10 aso , kinukuha ang 5 (pangkat 1) at 10 (pangkat 2)
    (?:pattern) Pangkat na hindi kumukuha: tumutugma sa isang grupo ngunit hindi ito nakukuha (\d+)(?: aso) Sa 5 pusa at 10 aso , kinukuha ang 10
    \1 Mga nilalaman ng pangkat 1 (\d+)\+(\d+)=\2\+\1 Tumutugma sa 5+10=10+5 at kumukuha ng 5 at 10 , na nasa pagkuha ng mga grupo
    \2 Mga nilalaman ng pangkat 2

    Mga Anchor

    Tumutukoy ang mga anchor ng posisyon sa input string kung saan hahanapin isang tugma.

    Anchor Paglalarawan Halimbawa Mga Tugma
    ^ Simula ng string

    Tandaan: Ang ibig sabihin ng [^inside bracket] ay "hindi"

    ^\d+ Anumang bilang ng mga digit sa simula ng string.

    Sa 5 pusa at 10 aso , tumutugma sa 5

    $ Pagtatapos ng string \d+$ Anumang bilang ng mga digit sa dulo ng string.

    Sa 10Y

    (?<=) Positibong tingin sa likod (?<=Y)X Tumutugma sa expression X kapag ito ay nauunahan ng Y (ibig sabihin, kung mayroong Y sa likod ng X)
    (? Negatibong tingin sa likod (? Tumutugma sa expression X kapag HINDI ito pinangungunahan ng Y

    Ngayong alam mo na ang mga mahahalaga, lumipat tayo sa pinakakawili-wiling bahagi - gamit ang regexes sa totoong data upang i-parse ang mga string at hanapin ang kinakailangang impormasyon. Kung kailangan mo ng higit pang mga detalye tungkol sa syntax, maaaring makatulong ang gabay ng Microsoft sa Regular Expression Language.

    Mga custom na RegEx function para sa Excel

    Gaya ng nabanggit na, ang Microsoft Excel ay walang built-in na RegEx function. Upang paganahin ang mga regular na expression, gumawa kami ng tatlong custom na VBA function (aka user-defined function). Maaari mong kopyahin ang mga code mula sa mga pahinang naka-link sa ibaba o mula sa aming sample workbook, at pagkatapos ay i-paste sa sarili mong mga Excel file.

    Paano gumagana ang VBA RegExp functions

    Ipinapaliwanag ng seksyong ito ang panloob na mechanics at maaaring int para sa mga gustong malaman kung ano mismo ang nangyayari sa backend.

    Upang simulan ang paggamit ng mga regular na expression sa VBA, kailangan mong i-activate ang RegEx object reference library o gamitin ang CreateObject function. Para iligtas ka sa problema sa pagtatakda ng reference sa VBA editor, pinili namin ang huli na diskarte.

    Ang RegExp object ay may 4 na katangian:

    • Pattern - ay ang pattern na itugma sa input string.
    • Global - kinokontrol kung hahanapin ang lahat ng tugma sa input string o ang una lang. Sa aming mga function, ito ay nakatakda sa True upang makakuha ng lahat ng mga tugma .
    • MultiLine - tinutukoy kung tutugma ang pattern sa mga line break sa mga multi-line na string o lamang sa unang linya. Sa aming mga code, ito ay nakatakda sa True to search sa bawat linya .
    • IgnoreCase - tinutukoy kung ang isang regular na expression ay case-sensitive (default) o case- insensitive (itakda sa True). Sa aming kaso, depende iyon sa kung paano mo iko-configure ang opsyonal na parameter na match_case . Bilang default, ang lahat ng mga function ay case-sensitive .

    Mga limitasyon ng VBA RegExp

    Ipinapatupad ng Excel VBA ang mahahalagang regex pattern, ngunit kulang ito ng maraming advanced na feature available sa .NET, Perl, Java, at iba pang regex engine. Halimbawa, hindi sinusuportahan ng VBA RegExp ang mga inline na modifier gaya ng (?i) para sa case-insensitive na pagtutugma o (?m) para sa multi-line mode, lookbehinds, POSIX classes, upang pangalanan ang ilan.

    Excel Regex Match function

    Ang RegExpMatch function ay naghahanap ng input string para sa text na tumutugma sa isang regular na expression at nagbabalik ng TRUE kung may nakitang tugma, FALSE kung hindi.

    RegExpMatch(text, pattern, [ match_case])

    Saan:

    • Text (kinakailangan) - isa o higit pang mga string na hahanapin.
    • Pattern ( kinakailangan) - ang regularexpression upang tumugma.
    • Match_case (opsyonal) - uri ng pagtutugma. TAMA o inalis - case-sensitive; FALSE - case-insensitive

    Narito ang code ng function.

    Halimbawa: kung paano gumamit ng mga regular na expression upang tumugma sa mga string

    Sa dataset sa ibaba, ipagpalagay na gusto mo upang matukoy ang mga entry na naglalaman ng mga SKU code.

    Dahil ang bawat SKU ay nagsisimula sa 2 malalaking titik, na sinusundan ng isang gitling, na sinusundan ng 4 na digit, maaari mong itugma ang mga ito gamit ang sumusunod na expression.

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

    Kung saan ang [A-Z]{2} ay nangangahulugang anumang 2 malalaking titik mula A hanggang Z at \d{4 } ay nangangahulugang anumang 4 na digit mula 0 hanggang 9. Ang isang hangganan ng salita \b ay nagpapahiwatig na ang isang SKU ay isang hiwalay na salita at hindi bahagi ng isang mas malaking string.

    Kapag naitatag ang pattern, magsimulang mag-type ng isang formula tulad ng karaniwan mong ginagawa , at lalabas ang pangalan ng function sa listahang iminungkahi ng Excel's AutoComplete:

    Ipagpalagay na ang orihinal na string ay nasa A5, ang formula ay napupunta sa sumusunod:

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

    Para sa kaginhawahan, maaari mong ipasok ang regular na expression sa isang hiwalay na cell at gumamit ng absolute reference ($A$2) para sa argument na pattern t. Tinitiyak nito na ang cell address ay mananatiling hindi nagbabago kapag kinopya mo ang formula sa ibang mga cell:

    =RegExpMatch(A5, $A$2)

    Upang ipakita ang iyong sariling mga text label sa halip na TRUE at FALSE, ilagay ang RegExpMatch sa IF function at tukuyin ang mga gustong text sa value_if_true at value_if_false plus 5 ay nagbibigay ng 15 , tumutugma sa 15

    \b Hangganan ng salita \bjoy\b Itinutugma ang kagalakan bilang isang hiwalay na salita, ngunit hindi sa kasiya-siya . \B HINDI isang hangganan ng salita \Bjoy\B Tumutugma sa kagalakan sa kasiya-siya , ngunit hindi bilang isang hiwalay na salita.

    Alternation (OR) construct

    Ang alternation operand ay nagbibigay-daan sa OR logic, kaya maaari mong itugma ito o ang elementong iyon.

    Construct Paglalarawan Halimbawa Mga Tugma

    Si Michael Brown ay isang dedikadong mahilig sa teknolohiya na may hilig sa pagpapasimple ng mga kumplikadong proseso gamit ang mga tool sa software. Sa higit sa isang dekada ng karanasan sa industriya ng tech, hinasa niya ang kanyang mga kasanayan sa Microsoft Excel at Outlook, pati na rin ang Google Sheets at Docs. Ang blog ni Michael ay nakatuon sa pagbabahagi ng kanyang kaalaman at kadalubhasaan sa iba, na nagbibigay ng madaling sundan na mga tip at mga tutorial para sa pagpapabuti ng pagiging produktibo at kahusayan. Isa ka mang batikang propesyonal o baguhan, nag-aalok ang blog ni Michael ng mahahalagang insight at praktikal na payo para masulit ang mahahalagang software tool na ito.