Мазмұны
Неге Excel формулаларында тұрақты өрнектерге қолдау көрсетілмейтінін ешқашан түсіне алмайсыз ба? Енді, олар :) Біздің реттелетін функциялардың көмегімен белгілі бір үлгіге сәйкес келетін жолдарды оңай табуға, ауыстыруға, шығарып алуға және жоюға болады.
Бір қарағанда, Excel-де мәтін жолы үшін қажет нәрсенің бәрі бар. манипуляциялар. Хмм… тұрақты өрнектер туралы не деуге болады? Өкінішке орай, Excel бағдарламасында кірістірілген Regex функциялары жоқ. Бірақ ешкім өзімізді өзіміз жасай алмаймыз деп айтпайды :)
Тұрақты өрнек дегеніміз не?
Тұрақты өрнек (aka regex немесе <8)>regexp ) – іздеу үлгісін анықтайтын арнайы кодталған таңбалар тізбегі. Сол үлгіні пайдаланып жолдан сәйкес таңбалар комбинациясын табуға немесе деректерді енгізуді тексеруге болады. Қойылмалы таңба белгілерімен таныс болсаңыз, регекстерді қойылмалы таңбалардың кеңейтілген нұсқасы ретінде қарастыруға болады.
Тұрақты өрнектердің арнайы таңбалардан, операторлардан және конструкциялардан тұратын өз синтаксисі болады. Мысалы, [0-5] 0-ден 5-ке дейінгі кез келген жалғыз цифрға сәйкес келеді.
Тұрақты өрнектер JavaScript және VBA сияқты көптеген бағдарламалау тілдерінде қолданылады. Соңғысының арнайы RegExp нысаны бар, оны біз реттелетін функцияларды жасау үшін қолданамыз.
Excel regex-ті қолдай ма?
Өкінішке орай, Excel бағдарламасында кірістірілген Regex функциялары жоқ. Формулаларыңызда тұрақты өрнектерді пайдалану мүмкіндігін алу үшін өзіңіздің пайдаланушы анықтайтын функцияңызды (VBA) жасауыңыз керек.аргументтер:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
Қосымша формула мысалдарын қараңыз:
- Тұрақты өрнектерді пайдаланып жолдарды сәйкестендіру жолы
- Регекстермен Excel деректерін тексеру
Excel Regex Extract функциясы
RegExpExtract функциясы қалыпты өрнекке сәйкес келетін ішкі жолдарды іздейді және барлық сәйкестіктерді шығарады немесе арнайы сәйкестік.
RegExpExtract(мәтін, үлгі, [дананың_нөмірі], [сәйкестік_регистрі])Мұнда:
- Мәтін (міндетті) - іздеуге арналған мәтін жолы в.
- Үлгі (міндетті) - сәйкес келетін тұрақты өрнек.
- Дана_нөмірі (міндетті емес) - қай дананы көрсететін сериялық нөмір сығындысы. Өткізілмесе, барлық табылған сәйкестіктерді қайтарады (әдепкі).
- Сәйкестік_регистрі (міндетті емес) - мәтін регистріне сәйкес (ШЫН немесе түсірілген) немесе елемеу (ЖАЛҒАН) екенін анықтайды.
Функцияның кодын осы жерден алуға болады.
Мысалы: тұрақты өрнектерді пайдаланып жолдарды шығару жолы
Мысалымызды сәл әрі қарай алсақ, шот-фактура нөмірлерін шығарып алайық. Ол үшін біз кез келген 7 таңбалы санға сәйкес келетін өте қарапайым регексті қолданамыз:
Үлгі : \b\d{7}\b
Put A2 пішіміндегі үлгіні көрсетіңіз, сонда сіз осы ықшам және талғампаз формуламен жұмысты орындайсыз:
=RegExpExtract(A5, $A$2)
Егер үлгі сәйкес келсе, формула шот-фактура нөмірін шығарады, егер сәйкестік табылмаса - ештеңе қайтарылмайды.
Қосымша мысалдар үшін мынаны қараңыз: Excel бағдарламасында жолдарды қалай шығаруға боладыregex көмегімен.
Excel Regex Replace функциясы
RegExpReplace функциясы сіз көрсеткен мәтінмен регекске сәйкес мәндерді ауыстырады.
RegExpReplace(мәтін, үлгі, ауыстыру , [дана_нөмірі], [сәйкестік_регистр])Мұндағы:
- Мәтін (міндетті) - іздеуге арналған мәтін жолы.
- Үлгі (міндетті) - сәйкес келетін тұрақты өрнек.
- Ауыстыру (міндетті) - сәйкес келетін ішкі жолдарды ауыстыратын мәтін.
- Дана_саны (міндетті емес) - ауыстырылатын данасы. Әдепкі мән – "барлық сәйкестіктер".
- Сәйкестік_регистрі (қосымша) - мәтін регистрін сәйкестендіру (ШЫН немесе түсірілген) немесе елемеу (ЖАЛҒАН) екенін басқарады.
Функцияның коды осында қолжетімді.
Мысалы: regexs көмегімен жолдарды ауыстыру немесе жою жолы
Кейбір жазбаларымызда несие картасының нөмірлері бар. Бұл ақпарат құпия болып табылады және оны бір нәрсемен ауыстырғыңыз немесе мүлдем жойғыңыз келуі мүмкін. Екі тапсырманы да 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 құралдары , ішкі жолдарды ауыстыру және жою
Біздің Ultimate Suite пайдаланушылары жұмыс кітаптарына бір жол кодты кірістірмей-ақ тұрақты өрнектердің барлық мүмкіндіктерін ала алады. Барлық қажетті кодты әзірлеушілеріміз жазған және орнату кезінде Excel бағдарламасына тегіс біріктірілген.
Жоғарыда талқыланған VBA функцияларынан айырмашылығы, Ultimate Suite функциялары .NET негізінде жасалған, бұл екі негізгі артықшылық береді:
- Қалыпты .xlsx жұмыс кітаптарында кез келген VBA кодын қоспай және оларды макрос қосылған файлдар ретінде сақтамай-ақ пайдалана аласыз.
- .NET Regex механизмі толық мүмкіндікті классикалық нұсқаны қолдайды.күрделі үлгілерді құруға мүмкіндік беретін тұрақты өрнектер.
Excel бағдарламасында Regex пайдалану жолы
Ultimate Suite орнатылған кезде Excel бағдарламасында тұрақты өрнектерді пайдалану осы екі қадам сияқты қарапайым. :
- Ablebits Data қойындысындағы Мәтін тобында Regex Tools түймесін басыңыз.
- Регекс құралдары тақтасында келесі әрекеттерді орындаңыз:
- Бастапқы деректерді таңдаңыз.
- Регекс үлгісін енгізіңіз.
- Қажетті опцияны таңдаңыз: Сәйкестендіру , Үзінді , Жою немесе Ауыстыру .
- Нәтижені келесідей алу үшін мән емес, формула үшін Формула ретінде кірістіру құсбелгісін қойыңыз.
- Әрекет түймесін басыңыз.
Мысалы, ұяшықтардан несие картасының нөмірлерін жою үшін A2:A6, біз мына параметрлерді конфигурациялаймыз:
Үш рет AblebitsRegex функциясы түпнұсқаның оң жағындағы жаңа бағанға кірістіріледі. деректер. Біздің жағдайда формула:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
Формула бар болғаннан кейін оны кез келген төл формула сияқты өңдеуге, көшіруге немесе жылжытуға болады.
Регекс формуласын ұяшыққа тікелей кірістіру жолы
AblebitsRegex функцияларын қондырма интерфейсін пайдаланбай-ақ ұяшыққа тікелей кірістіруге болады. Мынадай:
- Формулалар жолағындағы fx түймесін немесе Формулалар қойындысындағы Функцияны кірістіру түймесін басыңыз.
- Функцияны кірістіру тілқатысу терезесінде AblebitsUDFs таңдаңыз.санатын таңдап, қызығушылық танытатын функцияны таңдап, OK түймесін басыңыз.
- Әдетте жасайтындай функцияның аргументтерін анықтап, OK түймесін басыңыз. Дайын!
Қосымша ақпаратты Excel жүйесіне арналған Regex құралдары бөлімінен қараңыз.
Міне, Excel ұяшықтарындағы мәтінді сәйкестендіру, шығару, ауыстыру және жою үшін тұрақты өрнектерді пайдалану жолы. Оқығаныңыз үшін алғыс айтамын және сізді келесі аптада біздің блогта күтемін!
Қолжетімді жүктеп алулар
Excel Regex - формула мысалдары (.xlsm файлы)
Ultimate Suite - сынақ нұсқасы (.exe файлы)
немесе .NET негізінде) немесе регекстерді қолдайтын үшінші тарап құралдарын орнатыңыз.Excel Regex хит парағы
Регекс үлгісі өте қарапайым немесе өте күрделі болсын, ол жалпы синтаксис арқылы құрастырылады. Бұл оқу құралы тұрақты тіркестерді үйретуді мақсат етпейді. Бұл үшін жаңадан бастаушыларға арналған тегін оқулықтардан бастап озық пайдаланушыларға арналған премиум курстарға дейін көптеген ресурстар бар.
Төменде біз негізгі мәліметтерді түсінуге көмектесетін негізгі RegEx үлгілеріне жылдам сілтеме береміз. Ол әрі қарай мысалдарды зерттеген кезде де парак ретінде жұмыс істеуі мүмкін.
Егер сізге тұрақты өрнектерді ұнатсаңыз, RegExp функцияларына тікелей өтуіңізге болады.
Таңбалар
Бұлар белгілі бір таңбаларды сәйкестендіру үшін ең жиі қолданылатын үлгілер болып табылады.
Үлгі | Сипаттама | Мысалы | Сәйкестік |
. | Қойылмайтын таңба: жол үзілімінен басқа кез келген жалғыз таңбаға сәйкес келеді | .ot | нүкте , ыстық , қазан , @ot |
\d | Сандық таңба: кез келген жалғыз цифр 0-ден 9-ға дейін | \d | a1b ішінде 1 |
\D<сәйкес келеді 15> | Цифр ЕМЕС кез келген таңба | \D | a1b ішінде a және b<2 сәйкес келеді> |
\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 dog және <сәйкес келмейді 1>диг |
[ден–қа дейін] | Ол арасындағы ауқымдағы кез келген таңбаға сәйкес келеді.жақша | [0-9] [a-z] [A-Z] | 0-ден 9-ға дейінгі кез келген жалғыз цифр Кез келген жалғыз кіші әріп Кез келген жалғыз бас әріп |
Кванторлар
Кванторлар - сәйкес келетін таңбалар санын көрсететін арнайы өрнектер. Квантор әрқашан алдындағы таңбаға қолданылады.
Үлгі | Сипаттамасы | Мысалы | Сәйкестіктер |
* | Нөл немесе одан көп қайталану | 1a* | 1, 1a , 1aa, 1aaa және т.б. |
+ | Бір немесе бірнеше қайталану | po+ | қазанда , сәйкес келеді po нашар , сәйкес келеді poo |
? | Нөл немесе бір пайда | roa?d | жол, штанга |
*? | Нөл немесе одан да көп, бірақ мүмкіндігінше азырақ | 1a*? | 1a , 1aa және 1aaa сәйкес келеді 1a |
+? | Бір немесе бірнеше рет, бірақ мүмкіндігінше азырақ | po+? | қазан және нашар ішінде po |
сәйкес келеді? | Нөл немесе бір қайталану , бірақ мүмкіндігінше аз | roa?? | жол және таяқ ішінде ro | <сәйкес келеді. 16>
{n} | Алдыңғы үлгіні n рет сәйкестендіреді | \d{3} | Дәл 3 сан |
{n , | Алдыңғы үлгіге 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 |
$ | <14 сәйкес келеді>Жолдың соңы\d+$ | Жолдың соңындағы цифрлардың кез келген саны. 10 ішіндеY | |
(?<=) | Positive lookbehind | (?<=Y)X | X өрнегіне сәйкес келеді оның алдында Y тұрғанда (яғни X-тің артында Y болса) |
(? | Артына теріс қарау | (? <) 14>X өрнегінің алдында Y ЕМЕС болса, сәйкес келеді |
Енді негізгілерді білетін болсаңыз, ең қызықты бөлігіне көшейік - пайдалану жолдарды талдау және қажетті ақпаратты табу үшін нақты деректердегі regexs.Синтаксис туралы қосымша мәліметтер қажет болса, Microsoft корпорациясының тұрақты өрнек тілі бойынша нұсқаулығы пайдалы болуы мүмкін.
Excel үшін реттелетін RegEx функциялары
Жоғарыда айтылғандай, Microsoft Excel бағдарламасында кіріктірілген RegEx функциялары жоқ. Тұрақты өрнектерді қосу үшін біз үш теңшелетін VBA функциясын жасадық (пайдаланушы анықтайтын функциялар). Кодтарды төмендегі сілтеме жасалған беттерден немесе біздің үлгіден көшіруге болады. жұмыс кітабын, содан кейін өз Excel файлдарыңызға қойыңыз.
VBA RegExp функциялары қалай жұмыс істейді
Бұл бөлім ішкі механиканы түсіндіреді және int болуы мүмкін. серверде не болып жатқанын нақты білгісі келетіндерге арналған.
VBA-да тұрақты өрнектерді пайдалануды бастау үшін RegEx нысан анықтамалық кітапханасын белсендіру немесе CreateObject функциясын пайдалану қажет. VBA редакторында сілтемені орнату қиындықтарынан құтылу үшін біз соңғы тәсілді таңдадық.
RegExp нысанында 4 қасиет бар:
- Үлгі - болып табылады үлгі енгізу жолында сәйкестендіру үшін.
- Жаһандық - кіріс жолындағы барлық сәйкестіктерді немесе тек біріншісін табуды басқарады. Біздің функцияларымызда барлық сәйкестіктерді алу үшін ол True мәніне орнатылған.
- MultiLine - көп жолды жолдардағы жол үзілімдері бойынша үлгіні сәйкестендіруді немесе тек қана сәйкестендіруді анықтайды. бірінші жолда. Біздің кодтарымызда әрбір жолда іздеу үшін ол True мәніне орнатылған.
- IgnoreCase - тұрақты өрнектің регистрді (әдепкі) немесе регистрді ескеретінін анықтайды- сезімтал емес (True мәніне орнатылған). Біздің жағдайда бұл қосымша матч_жағдай параметрін конфигурациялау жолыңызға байланысты. Әдепкі бойынша, барлық функциялар регистрді ескереді .
VBA RegExp шектеулері
Excel VBA маңызды regex үлгілерін жүзеге асырады, бірақ оның көптеген кеңейтілген мүмкіндіктері жоқ. .NET, Perl, Java және басқа regex қозғалтқыштарында қол жетімді. Мысалы, VBA RegExp регистрді ескермейтін сәйкестік үшін (?i) немесе бірнеше жолды іздеу режимі үшін (?m) сияқты кірістірілген модификаторларға қолдау көрсетпейді. Сәйкестік функциясы
RegExpMatch функциясы тұрақты өрнекке сәйкес мәтінді енгізу жолын іздейді және сәйкестік табылса, АҚИҚА, әйтпесе ЖАЛҒАН мәнін қайтарады.
RegExpMatch(мәтін, үлгі, [ match_case])Мұнда:
- Мәтін (міндетті) - іздеу үшін бір немесе бірнеше жол.
- Үлгі ( міндетті) - тұрақтысәйкес келетін өрнек.
- Сәйкестік_регі (қосымша) - сәйкестік түрі. TRUE немесе түсірілген – регистрге сезімтал; ЖАЛҒАН - регистрді ескермейді
Функция коды осында.
Мысалы: жолдарды сәйкестендіру үшін тұрақты өрнектерді пайдалану жолы
Төмендегі деректер жиынында сізге қажет делік. SKU кодтары бар жазбаларды анықтау үшін.
Әр SKU 2 бас әріптен, одан кейін сызықша, одан кейін 4 цифрдан басталатынын ескере отырып, оларды келесі өрнек арқылы сәйкестендіруге болады.
Үлгі : \b[A-Z]{2}-\d{4}\b
Мұндағы [A-Z]{2} А-дан Z-ге дейінгі кез келген 2 бас әріпті және \d{4 дегенді білдіреді } 0-ден 9-ға дейінгі кез келген 4 санды білдіреді. \b сөз шекарасы SKU үлкен жолдың бөлігі емес, жеке сөз екенін көрсетеді.
Орнатылған үлгімен әдеттегідей формуланы теруді бастаңыз. , және функцияның аты Excel автотолтыруы ұсынған тізімде пайда болады:
Бастапқы жол A5 форматында болса, формула келесідей болады:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Ыңғайлы болу үшін тұрақты өрнекті бөлек ұяшыққа енгізуге және үлгі аргументі үшін абсолютті сілтемені ($A$2) пайдалануға болады. т. Бұл формуланы басқа ұяшықтарға көшірген кезде ұяшық мекенжайының өзгеріссіз қалуын қамтамасыз етеді:
=RegExpMatch(A5, $A$2)
TRUE және FALSE орнына жеке мәтін белгілерін көрсету үшін IF функциясына RegExpMatch енгізіңіз және мән_егер_шын болса және егер_жалған болса ішінде қажетті мәтіндерді көрсетіңізплюс 5 15 береді, 15-ке сәйкес келеді
Ауыспалы (НЕМЕСЕ) конструкциясы
Ауыспалы операнды НЕМЕСЕ логикасын қосады, осылайша сіз осы немесе басқа элементті сәйкестендіре аласыз.
Құрылыс | Сипаттамасы | Мысалы | Сәйкестіктер |