Excel RegEx misollari: formulalarda muntazam ifodalardan foydalanish

  • Buni Baham Ko'Ring
Michael Brown

Nima uchun Excel formulalarida oddiy iboralar qo'llab-quvvatlanmasligini hech qachon tushunolmaysizmi? Endi ular :) Bizning maxsus funksiyalarimiz yordamida siz ma'lum bir naqshga mos keladigan satrlarni osongina topishingiz, almashtirishingiz, chiqarib olishingiz va olib tashlashingiz mumkin.

Bir qarashda, Excelda matn qatori uchun kerak bo'ladigan hamma narsa mavjud. manipulyatsiyalar. Hmm… muntazam iboralar haqida nima deyish mumkin? Afsuski, Excelda o'rnatilgan Regex funksiyalari mavjud emas. Lekin hech kim bizni o'zimizni yarata olmaymiz demaydi :)

    Nima muntazam ifoda?

    Regnal ifoda (aka regex yoki <8)>regexp ) - qidiruv sxemasini belgilaydigan maxsus kodlangan belgilar ketma-ketligi. Ushbu naqshdan foydalanib, siz satrda mos keladigan belgilar kombinatsiyasini topishingiz yoki ma'lumotlar kiritilishini tasdiqlashingiz mumkin. Agar siz joker belgilar bilan tanish bo'lsangiz, regexlarni joker belgilarning kengaytirilgan versiyasi deb tasavvur qilishingiz mumkin.

    Oddiy iboralar maxsus belgilar, operatorlar va konstruksiyalardan iborat o'z sintaksisiga ega. Masalan, [0-5] 0 dan 5 gacha boʻlgan har qanday bitta raqamga mos keladi.

    Oddiy ifodalar JavaScript va VBA kabi koʻplab dasturlash tillarida qoʻllaniladi. Ikkinchisida maxsus RegExp ob'ekti mavjud bo'lib, biz undan shaxsiy funksiyalarimizni yaratishda foydalanamiz.

    Excel regexni qo'llab-quvvatlaydimi?

    Afsuski, Excelda o'rnatilgan Regex funksiyalari mavjud emas. Formulalarda muntazam iboralardan foydalanish uchun siz o'zingizning foydalanuvchi belgilagan funksiyangizni (VBA) yaratishingiz kerak bo'ladi.argumentlar:

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

    Ko'proq formulalar misollari uchun qarang:

    • Qanday qilib muntazam iboralar yordamida satrlarni moslashtirish kerak
    • Regexlar bilan Excel ma'lumotlarini tekshirish

    Excel Regex Extract funktsiyasi

    RegExpExtract funksiyasi muntazam ifodaga mos keladigan pastki qatorlarni qidiradi va barcha mosliklarni chiqaradi yoki maxsus moslik.

    RegExpExtract(matn, naqsh, [namuna_num], [match_case])

    Bu yerda:

    • Matn (majburiy) - qidirish uchun matn qatori in.
    • Naqsh (majburiy) - mos keladigan oddiy ibora.
    • Instance_num (ixtiyoriy) - qaysi namunani ko'rsatuvchi seriya raqami ekstrakti. Agar o'tkazib yuborilsa, barcha topilgan mosliklarni qaytaradi (standart).
    • Match_case (ixtiyoriy) - mos kelishini (TRUE yoki o'tkazib yuborilgan) yoki e'tibor bermaslikni (FALSE) belgilaydi.

    Funksiya kodini shu yerda olishingiz mumkin.

    Masalan: oddiy iboralar yordamida satrlarni qanday chiqarish mumkin

    Misolimizni biroz uzoqroqqa olsak, hisob-faktura raqamlarini chiqaramiz. Buning uchun biz har qanday 7 xonali raqamga mos keladigan juda oddiy regexdan foydalanamiz:

    Pattern : \b\d{7}\b

    Put A2 formatidagi naqsh va siz ushbu ixcham va oqlangan formula yordamida ishni bajarasiz:

    =RegExpExtract(A5, $A$2)

    Agar naqsh mos kelsa, formuladan hisob-faktura raqami chiqariladi, agar moslik topilmasa - hech narsa qaytarilmaydi.

    Qo'shimcha misollar uchun qarang: Excelda satrlarni qanday chiqarish mumkinregexdan foydalanish.

    Excel Regex Replace funksiyasi

    RegExpReplace funktsiyasi regexga mos keladigan qiymatlarni siz ko'rsatgan matn bilan almashtiradi.

    RegExpReplace(matn, naqsh, almashtirish , [instance_num], [match_case])

    Bu yerda:

    • Matn (majburiy) - qidirish uchun matn qatori.
    • Pattern (majburiy) - mos keladigan oddiy ibora.
    • Almashtirish (majburiy) - mos keladigan pastki satrlar bilan almashtiriladigan matn.
    • Instance_num (ixtiyoriy) - almashtiriladigan misol. Standart “barcha mosliklar”.
    • Match_case (ixtiyoriy) - matn registriga mos kelishini (TRUE yoki o‘tkazib yuborilgan) yoki e’tibor bermaslikni (FALSE) boshqaradi.

    Funksiya kodi bu yerda mavjud.

    Masalan: regexlar yordamida satrlarni qanday almashtirish yoki olib tashlash

    Ba'zi yozuvlarimizda kredit karta raqamlari mavjud. Ushbu ma'lumotlar maxfiydir va siz uni biror narsa bilan almashtirishni yoki butunlay o'chirishni xohlashingiz mumkin. Har ikkala vazifani ham RegExpReplace funksiyasi yordamida bajarish mumkin. Qanday? Ikkinchi stsenariyda biz bo'sh satr bilan almashtiramiz.

    Bizning namunaviy jadvalimizda barcha karta raqamlari 16 ta raqamdan iborat bo'lib, ular bo'sh joy bilan ajratilgan 4 guruhda yozilgan. Ularni topish uchun biz ushbu oddiy ifoda yordamida naqshni takrorlaymiz:

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

    Almashtirish uchun quyidagi satr ishlatiladi:

    Almashtirish : XXXX XXXX XXXXXXXX

    Va bu erda kredit karta raqamlarini sezgir bo'lmagan ma'lumotlar bilan almashtirishning to'liq formulasi:

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

    Alohida hujayralardagi regex va almashtirish matni bilan ( A2 va B2), formula teng darajada yaxshi ishlaydi:

    Excelda "olib tashlash" "almashtirish" ning alohida holatidir. Kredit karta raqamlarini o'chirish uchun almashtirish argumenti uchun bo'sh qatordan ("") foydalaning:

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

    Maslahat. Natijalarda bo'sh satrlarni o'rnatish uchun ushbu misolda ko'rsatilganidek, boshqa RegExpReplace funksiyasidan foydalanishingiz mumkin: Regex yordamida bo'sh satrlarni qanday olib tashlash mumkin.

    Qo'shimcha ma'lumot uchun qarang:

    • Excelda regex yordamida satrlarni qanday almashtirish mumkin
    • regex yordamida satrlarni qanday olib tashlash mumkin
    • Regexlar yordamida boʻshliqni qanday olib tashlash mumkin

    Regeks moslashtirish, chiqarish vositalari , pastki satrlarni almashtiring va olib tashlang

    Ultimate Suite foydalanuvchilari ish kitoblariga bitta qator kod kiritmasdan ham oddiy iboralarning barcha imkoniyatlarini olishlari mumkin. Barcha kerakli kodlar bizning ishlab chiquvchilarimiz tomonidan yozilgan va o'rnatish vaqtida Excelga silliq tarzda integratsiyalangan.

    Yuqorida muhokama qilingan VBA funksiyalaridan farqli o'laroq, Ultimate Suite funksiyalari .NET-ga asoslangan bo'lib, ikkita asosiy afzallik beradi:

    1. Oddiy .xlsx ishchi kitoblarida oddiy iboralardan hech qanday VBA kodini qo'shmasdan va ularni makrofayllar sifatida saqlamasdan foydalanishingiz mumkin.
    2. .NET Regex mexanizmi to'liq xususiyatli klassikani qo'llab-quvvatlaydi.muntazam iboralar, bu sizga yanada murakkab naqshlar yaratish imkonini beradi.

    Excel'da Regex-dan qanday foydalanish

    Ultimate Suite o'rnatilgan bo'lsa, Excelda muntazam ifodalardan foydalanish bu ikki qadam kabi oddiy. :

    1. Ablebits Data yorligʻida Matn guruhida Regex Tools -ni bosing.

    2. Regex Tools panelida quyidagilarni bajaring:
      • Manba maʼlumotlarini tanlang.
      • Regex naqshingizni kiriting.
      • Istagan variantni tanlang: Match , Extract , O'chirish yoki O'zgartirish .
      • Natijani quyidagicha olish uchun formula emas, balki qiymat uchun Formula sifatida kiritish katagiga belgi qo'ying.
      • Harakat tugmasini bosing.

      Masalan, kredit karta raqamlarini hujayralardan olib tashlash uchun A2:A6, biz ushbu sozlamalarni sozlaymiz:

    Bir martalik AblebitsRegex funktsiyasi asl nusxangizning o'ng tomonidagi yangi ustunga kiritiladi. ma'lumotlar. Bizning holatda formula:

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

    Formula mavjud bo'lgandan so'ng uni istalgan mahalliy formula kabi tahrirlashingiz, nusxalashingiz yoki ko'chirishingiz mumkin.

    Regeks formulasini to'g'ridan-to'g'ri hujayraga qanday kiritish kerak

    AblebitsRegex funktsiyalari plagin interfeysidan foydalanmasdan ham to'g'ridan-to'g'ri hujayra ichiga kiritilishi mumkin. Mana shunday:

    1. Formulalar panelidagi fx tugmasini yoki Formulalar yorlig'ida Funktsiyani qo'shish tugmasini bosing.
    2. Funktsiyani kiritish dialog oynasida AblebitsUDFs ni tanlang.kategoriyasini tanlang, qiziqtirgan funksiyani tanlang va OK tugmasini bosing.

    3. Odatdagi kabi funksiya argumentlarini aniqlang va OK tugmasini bosing. Bajarildi!

    Qo'shimcha ma'lumot olish uchun Excel uchun Regex Tools-ga qarang.

    Mana shunday oddiy iboralarni Excel kataklaridagi matnni moslashtirish, ajratib olish, almashtirish va olib tashlash uchun ishlatish mumkin. O'qiganingiz uchun rahmat va sizni keyingi haftada blogimizda ko'rishni orziqib kutaman!

    Mavjud yuklab olishlar

    Excel Regex - formula misollari (.xlsm fayli)

    Ultimate Suite - sinov versiyasi (.exe fayli)

    yoki .NET asosida) yoki regexlarni qo'llab-quvvatlovchi uchinchi tomon vositalarini o'rnating.

    Excel Regex cheat varaqlari

    Regex naqsh juda oddiy yoki o'ta murakkab bo'ladimi, u umumiy sintaksis yordamida qurilgan. Ushbu qo'llanma sizga oddiy iboralarni o'rgatish maqsadini ko'rmaydi. Buning uchun yangi boshlanuvchilar uchun bepul oʻquv qoʻllanmalaridan tortib ilgʻor foydalanuvchilar uchun premium kurslargacha boʻlgan koʻplab resurslar mavjud.

    Quyida biz asosiy maʼlumotlarni tushunishingizga yordam beradigan asosiy RegEx naqshlariga qisqacha havola beramiz. Shuningdek, u boshqa misollarni o‘rganayotganda hiyla-nayrang varaqasi bo‘lib xizmat qilishi mumkin.

    Agar siz oddiy iboralar bilan tanish bo‘lsangiz, to‘g‘ridan-to‘g‘ri RegExp funksiyalariga o‘tishingiz mumkin.

    Belgilar

    Bular muayyan belgilarga mos keladigan eng tez-tez ishlatiladigan naqshlar.

    mos keladi <14 mos keladi>
    Naqsh Ta'rif Misol Moslik
    . Jirkat belgisi: qator uzilishidan tashqari har qanday bitta belgiga mos keladi .ot nuqta , issiq , pot , @ot
    \d Raqamli belgi: har qanday bitta raqam 0 dan 9 gacha \d a1b da 1
    \D Raqam bo'lmagan har qanday belgi \D a1b da a va b<2 ga mos keladi>
    \s Boʻsh joy belgisi: boʻsh joy, tab, yangi satr va karetani qaytarish .\s. In 3 tsent , mos keladi 3 c
    \S Har qandaybo'sh joy bo'lmagan belgi \S+ 30 tsent da 30 va tsent
    \w Soʻz belgisi: har qanday ASCII harfi, raqam yoki pastki chiziq \w+ 5_cats*** ichida, mos keladi 5_cats
    \W Alfanumerik belgi yoki pastki chiziq boʻlmagan har qanday belgi \W+ 5_cats*** da, ***
    \t tab
    \n Yangi qator \n\d+ Ikki qatorda quyidagi qator, 10

    5 mushuk

    10 itga mos keladi

    \ Belgining maxsus ma'nosidan qochadi, shuning uchun siz uni qidiring \.

    \w+\.

    To'g'ridan-to'g'ri ""ni topishingiz uchun nuqta qo'yadi. satrdagi belgi

    Janob , Xonim , Prof.

    Belgilar sinflari

    Ushbu naqshlardan foydalanib, siz turli belgilar to'plamining elementlarini moslashtirishingiz mumkin.

    Naqsh Tavsif Misol Mos keladi
    [belgilar] Qavs ichidagi istalgan bitta belgiga mos keladi d[oi]g dog va dig
    [^belgilar] Qavs ichidagi EMAS har qanday bitta belgiga mos keladi d[^oi]g dag, dug , d1g

    ga mos kelmaydi dog va dig

    [dan–to] Oradagi diapazondagi har qanday belgiga mos keladi.qavslar [0-9]

    [a-z]

    [A-Z]

    0 dan 9 gacha bo'lgan har qanday bitta raqam

    Har qanday bitta kichik harf

    Har qanday bitta bosh harf

    Kvantorlar

    Kvantorlar mos keladigan belgilar sonini belgilaydigan maxsus ifodalardir. Miqdor ko'rsatkichi har doim o'zidan oldingi belgi uchun amal qiladi.

    Naqsh Ta'rif Misol Mosliklar
    * Nol yoki undan ortiq takrorlanishlar 1a* 1, 1a , 1aa, 1aaa va boshqalar.
    + Bir yoki bir nechta takrorlanish po+ pot da , mos keladi po

    paor da, mos keladi poo

    ? Nol yoki bitta hodisa roa?d yo'l, rod
    *? Nol yoki koʻproq holatlar, lekin iloji boricha kamroq 1a*? 1a , 1aa va 1aaa da mos keladi 1a
    +? Bir yoki bir nechta, lekin iloji boricha kamroq po+? pot va yomon da po
    mos keladi? Nol yoki bitta holat , lekin iloji boricha kamroq roa?? road va rod da ro
    {n} Oldingi naqshga n marta mos keladi \d{3} Aniq 3 ta raqam
    {n ,} Oldingi naqshga n yoki undan ortiq marta mos keladi \d{3,} 3 yoki undan ortiq raqam
    {n,m} Mos keladin va m marta orasidagi oldingi naqsh \d{3,5} 3 dan 5 tagacha raqam

    Guruhlash

    Guruhlash konstruksiyalari manba qatoridan pastki qatorni olish uchun ishlatiladi, shuning uchun siz u bilan ba'zi amallarni bajarishingiz mumkin.

    Sintaksis Tavsif Misol Mos keladi
    (naqsh) Qo'lga olish guruhi: mos keladigan pastki qatorni oladi va unga tartib raqamini beradi (\d+) 5 ta mushuk va 10 ta it da 5 (1-guruh) va 10 (2-guruh)
    (?:pattern) Qoʻlga kiritilmaydigan guruh: guruhga mos keladi, lekin uni ushlamaydi (\d+)(?: itlar) 5 mushuk va 10 itda , ushlaydi 10
    \1 Guruh tarkibi 1 (\d+)\+(\d+)=\2\+\1 5+10=10+5 ga mos keladi va 5 ni oladi va 10 , ular qo'lga olish guruhlarida
    \2 2-guruh tarkibi

    Anchorlar

    Anchorlar kirish satrida qayerdan izlash kerakligini belgilaydi o'yin.

    <14 mos keladi>Qator oxiri
    Ankor Ta'rif Misol Guruhlar
    ^ Qatorning boshlanishi

    Izoh: [^ichki qavslar] “yo‘q” degan ma’noni bildiradi

    ^\d+ Istalgan sondagi raqamlar satrning boshlanishi.

    5 mushuk va 10 it da 5

    $ \d+$ Satr oxiridagi istalgan son raqamlar.

    10 ichidaY

    (?<=) Positive lookbehind (?<=Y)X X ifodasiga mos keladi undan oldin Y bo'lganda (ya'ni, agar X orqasida Y bo'lsa)
    (? Salbiy qarash (? <) 14>X iborasidan oldin Y BOʻLMAGAN hollarda mos keladi

    Endi siz asosiy narsalarni bilasiz, keling, eng qiziqarli qismga oʻtamiz – foydalanish satrlarni tahlil qilish va kerakli maʼlumotlarni topish uchun haqiqiy maʼlumotlarda regexlar. Agar sintaksis haqida batafsil maʼlumot kerak boʻlsa, Microsoft-ning Oddiy ifoda tili boʻyicha qoʻllanmasi foydali boʻlishi mumkin.

    Excel uchun maxsus RegEx funksiyalari

    Yuqorida aytib o'tilganidek, Microsoft Excel-da o'rnatilgan RegEx funksiyalari yo'q. Muntazam ifodalarni yoqish uchun biz uchta maxsus VBA funksiyasini (aka foydalanuvchi tomonidan belgilangan funksiyalar) yaratdik. Kodlarni quyida havola qilingan sahifalardan yoki namunamizdan nusxalashingiz mumkin. ish kitobiga o'ting va keyin o'zingizning Excel fayllaringizga joylashtiring.

    VBA RegExp funksiyalari qanday ishlaydi

    Ushbu bo'lim ichki mexanikani tushuntiradi va int bo'lishi mumkin. backendda nima sodir bo'lishini aniq bilmoqchi bo'lganlar uchun eresting.

    VBA-da oddiy iboralardan foydalanishni boshlash uchun siz RegEx ob'ektiga murojaat kutubxonasini faollashtirishingiz yoki CreateObject funksiyasidan foydalanishingiz kerak. VBA muharririda havolani o'rnatish muammosidan xalos bo'lish uchun biz oxirgi yondashuvni tanladik.

    RegExp obyekti 4 ta xususiyatga ega:

    • Pattern - bo'ladi naqsh kiritish satriga mos keladi.
    • Global - kirish qatoridagi barcha mosliklarni yoki faqat birinchisini topishni nazorat qiladi. Bizning funksiyalarimizda barcha mosliklarni olish uchun u True ga o‘rnatiladi.
    • MultiLine - ko‘p qatorli satrlardagi satr uzilishlari bo‘ylab naqsh mos kelishini yoki faqat mos kelishini aniqlaydi. birinchi qatorda. Bizning kodlarimizda har bir satrda qidirish uchun u True ga o'rnatiladi.
    • IgnoreCase - oddiy ifoda katta-kichik harfga sezgir (standart) yoki katta-kichik ekanligini belgilaydi- sezgir emas (True ga o'rnatiladi). Bizning holatda, bu ixtiyoriy match_case parametrini qanday sozlashingizga bog'liq. Odatiy bo'lib, barcha funksiyalar katta-kichik harflarga sezgir .

    VBA RegExp cheklovlari

    Excel VBA asosiy regex naqshlarini amalga oshiradi, lekin unda ko'plab ilg'or funksiyalar mavjud emas. .NET, Perl, Java va boshqa regex dvigatellarida mavjud. Misol uchun, VBA RegExp (?i) katta-kichik harflarni sezmaydigan moslik uchun yoki (?m) ko‘p qatorli rejim uchun, orqaga qarab, POSIX sinflari kabi qatorli o‘zgartirishlarni qo‘llab-quvvatlamaydi.

    Excel Regex. Moslash funksiyasi

    RegExpMatch funksiyasi kirish satrida muntazam ifodaga mos keladigan matnni qidiradi va agar moslik topilsa TRUE, aks holda FALSE qaytaradi.

    RegExpMatch(matn, naqsh, [ match_case])

    Bu yerda:

    • Matn (majburiy) - qidirish uchun bir yoki bir nechta satr.
    • Naqsh ( talab qilinadi) - muntazammos keladigan ifoda.
    • Match_case (ixtiyoriy) - moslik turi. TRUE yoki o'tkazib yuborilgan - katta-kichik harflarga sezgir; FALSE - katta-kichik harflarni sezmaydi

    Funksiya kodi bu yerda.

    Masalan: satrlarni moslashtirish uchun oddiy iboralarni qanday ishlatish kerak

    Quyidagi ma'lumotlar to'plamida siz xohlaysiz deylik. SKU kodlarini o'z ichiga olgan yozuvlarni aniqlash uchun.

    Har bir SKU 2 ta bosh harfdan keyin chiziqcha va 4 ta raqamdan boshlanishini hisobga olsak, ularni quyidagi ifoda yordamida moslashtirishingiz mumkin.

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

    Bu yerda [A-Z]{2} A dan Z gacha va \d{4 gacha boʻlgan har qanday 2 ta bosh harfni bildiradi. } 0 dan 9 gacha boʻlgan har qanday 4 ta raqamni bildiradi. Soʻz chegarasi \b ​​SKU kattaroq qatorning bir qismi emas, alohida soʻz ekanligini bildiradi.

    Naqsh oʻrnatilgandan soʻng, odatdagidek formulani yozishni boshlang. , va funksiya nomi Excelning Avtomatik toʻldirish dasturi tomonidan tavsiya etilgan roʻyxatda paydo boʻladi:

    Asl satr A5 formatida boʻlsa, formula quyidagicha boʻladi:

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

    Qulaylik uchun siz oddiy iborani alohida katakka kiritishingiz va naqsh argumenti uchun mutlaq havoladan ($A$2) foydalanishingiz mumkin. t. Bu formulani boshqa kataklarga nusxalashda katak manzili oʻzgarmasligini taʼminlaydi:

    =RegExpMatch(A5, $A$2)

    TRUE va FALSE oʻrniga oʻz matn yorliqlaringizni koʻrsatish uchun RegExpMatch ni IF funksiyasiga joylashtiring va agar_haqiqat_qiymat va agar_noto'g'ri qiymat da kerakli matnlarni belgilangplyus 5 15 ni beradi, 15 ga mos keladi

    \b So'z chegarasi \bjoy\b joy alohida so'z sifatida mos keladi, lekin rohatli da emas. \B So'z chegarasi EMAS \Bjoy\B joy ga rohatli da mos keladi, lekin alohida soʻz sifatida emas.

    Alternatsiya (OR) konstruksiyasi

    Alternativ operand OR mantiqini faollashtiradi, shuning uchun siz u yoki bu elementga mos kelishingiz mumkin.

    Tuzilish Ta'rif Misol Mosliklar

    Maykl Braun - dasturiy vositalardan foydalangan holda murakkab jarayonlarni soddalashtirishga ishtiyoqi bo'lgan maxsus texnologiya ishqibozi. Texnologiya sohasida o'n yildan ortiq tajribaga ega bo'lgan holda, u Microsoft Excel va Outlook, shuningdek, Google Sheets va Docs dasturlarida o'z mahoratini oshirdi. Mayklning blogi o'z bilimi va tajribasini boshqalar bilan baham ko'rishga, samaradorlik va samaradorlikni oshirish uchun amal qilish oson maslahatlar va o'quv qo'llanmalariga bag'ishlangan. Tajribali mutaxassismisiz yoki yangi boshlovchi boʻlasizmi, Mayklning blogi ushbu muhim dasturiy vositalardan maksimal darajada foydalanish uchun qimmatli tushunchalar va amaliy maslahatlarni taqdim etadi.