Током последњих месец дана покривао сам апликације Схортцутс и Аутоматор на иОС-у и мацОС-у. Оба су моћна када је у питању аутоматизација у Аппле екосистему, а почевши од мацОС Монтереи ове јесени, Схортцутс ће бити апликација за аутоматизацију на свим Аппле уређајима. Због тога сам желео да овај чланак потрошим на дискусију о веома моћној теми: Коришћење редовног израза са апликацијом Пречице.
Иако имам искуство у информатици и програмирању, некако никада нисам наишао на регек. Можда ме је име уплашило, или је то можда био код, који је један од најмање читљивих кодова које сам икада видео.
Шта год да је случај, одлучио сам да даље погледам регуларни израз након што сам покрио апликацију Пречице током последњих неколико месеци. И оно што сам открио је да се многа ограничења на која сам наишао са пречицама, као и са Аутоматор-ом, могу да се превазиђу помоћу регуларног израза.
Другим речима, није било да овим апликацијама недостају функције, већ да мени недостаје образовање.
Дакле, у данашњем посту, ти и ја ћемо заједно научити детаље редовног израза. На тај начин можете извући максимум из сваке од ових апликација.
Покрићемо основе редовног израза (почевши од онога што је), шта можете да урадите са њим у апликацији Пречице, неким веб локацијама и ресурсе које можете да користите ако не желите сами да научите регек, а онда ћемо ући у основне концепте и механику редовног израза Језик.
У реду, хајде да почнемо!
Садржај
-
Шта су регуларни изрази (тј. регек)?
- Ствари које можете да урадите са регуларним изразом
- Како можете да користите регуларни израз са апликацијом Пречице?
- Користите регек101.цом да тестирате своје регуларне изразе
- Ако не желите да научите како да користите регек са апликацијом Пречице, прочитајте ово
-
Регек за почетнике: Почните да користите регек са пречицама
- Шта су регек укуси?
- Веб локације и референце које ће вам помоћи да почнете да учите регуларни израз помоћу пречица
- Како извршити основну претрагу текста користећи регуларни израз са пречицама
- Додавање променљивих компоненти вашим претрагама регуларних израза
- Опсези могу проширити вашу претрагу
- Како да искључите речи и знакове из ваших претрага регуларних израза помоћу пречица
- Замјенски знакови вам могу дати више опција за претрагу
- Користите квантификаторе да бисте одредили дужину текста који тражите
- Постоји још неколико квантификатора о којима бисте желели да знате
- Потражите знакове на почетку и на крају низа текста
- Чувајте текстуалне низове користећи функцију груписања редовног израза са пречицама
-
Шта сад?
- Како бисте ово рашчланили?
-
Почните да користите регуларни израз са пречицама да бисте своју аутоматизацију подигли на виши ниво
- Повезани постови:
Шта су регуларни изрази (тј. регек)?
Регуларни израз, или „регек“, је део кода који можете да користите за претрагу дела текста унутар већег дела текста.
У случају да не знате, део текста унутар другог дела текста се у програмирању назива „стринг“. На пример, реч „зелено“ је низ знакова из текста „Данас сам носио зелене панталоне“.
Другим речима, регек је начин да се лоцира низ текста у већем делу текста. А пошто је регек написан у коду, можете га користити за обављање неких прилично сложених операција.
На пример, ако желите да тражите реч „е-пошта“, лако можете да напишете регуларни код који тражи е-пошту.
Међутим, ако желите да пронађете поруку е-поште која се налази унутар пасуса, а не знате тачно која је то порука е-поште, онда ћете морати да потражите низ текста који је форматиран као имејл. тј. стринг који прати „[е-маил заштићен]” формат.
Сада, рецимо да не желите само да пронађете једну е-пошту из пасуса, већ сваки емаил. Можда желите да их брзо копирате негде другде, ажурирате их на нови формат или их замените тако да сви кажу „[е-маил заштићен]“.
Како будете све искуснији и искуснији са редовним изразима, моћи ћете да радите све ове ствари и више од тога.
Ствари које можете да урадите са регуларним изразом
У реду, па можда примери са имејлом које сам управо дао нису толико практични. Не брините – то је далеко од границе онога што можете да постигнете помоћу редовног израза са апликацијом Пречице.
Уопштено говорећи, све што регек може да уради спада у једну од ове четири категорије:
- Пронађите низ текста у већем делу текста (тј. тражите реч/стринг/тип низа на страници текста).
- Потврдите да низ текста одговара вашем жељеном формату (тј. проверите да ли је низ текста написан великим словима/редоследом/интерпункцијом).
- Замените или уметните текст у одређеном делу текста.
- Раздвојите низ текста на одређеним местима (нпр. поделите део текста сваки пут када постоји зарез).
Ниво дубине који можете да користите за интеракцију са сваком од ових врста функција и начин на који можете да их комбинујете чине регек невероватно моћним алатом за рашчлањивање и манипулацију текстом.
Како можете да користите регуларни израз са апликацијом Пречице?
У реду, сада се надамо да имате основну идеју за шта се користи регек. То је врста кода који можете да користите за претрагу текста, чак и ако не знате тачно шта је то текст.
Па како вам ово помаже у пречицама? Слично додавању скрипти вашим пречицама, то је начин да се пређе од основних аутоматизација (Пошаљи ми поруку када се улазна врата отворе) на напредније опције (Аутоматски креирај догађај у календару за моје састанке сваки пут када добијем имејл за Зоом састанак са посла).
Можете да користите регек са пречицама да проверите да ли је унос тачан. На пример, ако креирате пречицу која ради само са УРЛ адресама, можете да користите регуларни израз на почетку пречице да бисте били сигурни да корисник покреће аутоматизацију на УРЛ-у.
Можете комбиновати регек са скриптовањем да бисте креирали моћне пречице. На пример, ову пречицу користи регек и скриптовање да претвори бар код у УРЛ за вашу омиљену продавницу.
Када користите апликацију Пречице на Мац-у (долази јесен 2021.), можете да користите регек да извршите групне радње на делу текста. На пример, можете копирати све е-поруке у одабраном тексту као поређану листу. Или можете да замените сва имена у документу знаковима „*“ да бисте осигурали приватност.
Можете чак и да копирате део текста из једне апликације, да га преформатирате тако да одговара подешавањима друге апликације, а затим да га налепите у ту другу апликацију, све са једном радњом десног клика.
Другим речима, регек вам даје потпуну контролу над руковањем текстом помоћу апликације Пречице. То можда у почетку не звучи од велике помоћи, али сада када знате да постоји, сигурно ћете почети да примећујете колико пречица може да се побољша помоћу ове функције. Такође ћете приметити да многе пречице нису могуће чак ни без редовног израза.
Користите регек101.цом да тестирате своје регуларне изразе
Када почнете да користите регек са пречицама, наићи ћете на тачку фрустрације:
Заиста је тешко тестирати свој код регуларног израза. И то није јединствено за регек. Тестирање било чега помоћу апликације Схортцутс је прилично мука. Једини начин да то урадите је да покренете пречицу. Тај метод није лош када само тестирате уграђене функције пречица.
Али за тестирање кода, ово не дозвољава проверу ред по ред и не нуди много повратних информација.
За то бих препоручио коришћење регек101.цом. То је веб локација на коју можете да унесете регуларни код у реалном времену. Такође можете да унесете текст у уређивач текста на истој веб страници. Док куцате сваки, видећете да ли ваш регуларни израз ради, зашто ради или не ради, и добићете информације о пронађеним подударањима.
регек101.цом користи другачију врсту редовног израза од оног који подржавају пречице (више о томе за минут), али је довољно близу да не бисте требали наићи на превише проблема.
Коришћење овог алата је сјајно јер тамо прво можете да напишете свој регуларни израз, а затим да га копирате у апликацију Пречице када почне како треба.
Ако не желите да научите како да користите регек са апликацијом Пречице, прочитајте ово
Схватам – неће сви желети да науче како да користе регуларни израз са пречицама. То је вештина, а то значи да ће захтевати време и праксу. Није ни приближно тако једноставно као остале функције превлачења и испуштања у апликацији Пречице.
Без бриге! Иако нећете моћи да извучете толико из апликације Пречице као неко ко уложи време да научи регуларни израз, још увек постоје опције које су вам доступне. Наиме, постоје сајтови и странице на мрежи на којима су људи направили листу угриза кодова редовног израза које можете копирати и налепити у апликацију Пречице.
Ево неколико веза које можете да проверите ако не желите да научите регек:
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet
- https://www.reddit.com/r/shortcuts/comments/9zo24n/regex_cookbook_for_shortcuts_reusable_regex_to/
- https://www.reddit.com/r/shortcuts/comments/b5labq/match_text_examples_for_the_beginner_a_regex/
- http://www.rexegg.com/regex-cookbook.html
Само прочитајте те везе и требало би да будете у могућности да пронађете уобичајена решења за регуларне изразе за пречице које желите да направите. Ово неће бити опција без образовања, јер ће и даље бити потребно мало да схватите шта гледате. Али то је много једноставније и идеално решење за некога ко нема времена да стави у регек.
Уз то, морам признати да регек није превише тешко научити, посебно ако имате искуства са схелл кодом или почетничким програмирањем. Регек ми је у почетку звучао као бесмислица, али након сат времена читања чланака и играња са регек101.цом, могао сам да почнем да пишем регек за своје пречице.
То је само позната ствар - након што га довољно дуго гледате, престаће да изгледа тако чудно. Дакле, ако имате времена и само сте уплашени, немојте бити!
Регек за почетнике: Почните да користите регек са пречицама
Добро, доста предговора! Требало би да имате представу о томе шта је регуларни израз, шта може да уради, зашто би требало да га научите и довољно информација да одлучите да ли желите да га научите. Сада ћемо ући у суштину.
Доле има пуно садржаја, али не брините! Овај чланак ће бити више водич за учење. Препоручујем да пређете преко сваког одељка тако да стекнете представу о механици коју регек користи. Ово би такође требало да вам помогне да замотате главу око тога, ако сте још увек збуњени шта је регек.
Након што сте прелетели ствари, препоручујем вам да отворите регек101.цом и играте се са сваким од алата у сваком одељку испод. То ће вам помоћи да видите како концепти изгледају у пракси, као и да побољшате своје памћење. Након што то урадите, можете само да третирате овај чланак као референтну тачку – нешто чему можете да се вратите када заборавите делове редовног израза.
Ок идемо!
Шта су регек укуси?
Прво ћемо погледати укусе регуларних израза. Не брините – ово неће утицати на вашу свакодневну употребу редовног израза са пречицама. То је само нешто чега треба бити свестан пре него што почнете.
Постоје различите верзије редовног израза које су познате као „укуси“. Ове различите верзије су и даље веома сличне. Ако можете да научите да читате и пишете један укус, требало би да будете у могућности да читате било који од њих. Постојаће само мале разлике у начину на који ваш код регуларног израза треба да буде форматиран.
У програмирању, ове специфичности форматирања су познате као „синтакса“. То је само начин на који морате да напишете свој код да би га разумела апликација у којој га пишете.
Ево зашто је синтакса важна
"Хеј пријатељу, како ти иде дан?"
“, иде ли пријатељу? твој Хеј дан како"
Обе реченице имају исте речи, знакове и размаке. Међутим, само једно има смисла, и то зато што следи конвенционалну синтаксу.
У кодирању, један програмски језик може да разуме прву верзију, али не и другу. За други програмски језик, међутим, други може имати потпуног смисла док први изгледа као бесмислица. Некоме ко говори енглески, вероватно можете разумети намеру оба реда, иако ће за један бити потребно мало труда да се схвати значење.
Тако су (некако) различити укуси редовног израза. Сви ће изгледати мало другачије и мало слично вама. Али морате да користите прави укус за апликацију коју користите, иначе та апликација неће имати појма шта сте написали.
Апликација Схортцутс разуме укус регуларног израза у ИЦУ, тако да је то укус који желите да користите. Сајт регек101.цом има неколико различитих укуса које можете изабрати са леве стране странице. Међутим, користи ПЦРЕ, који је прилично сличан ИЦУ.
Важно је знати да постоје различите врсте регуларног израза јер ћете без сумње наићи на различите укусе на мрежи. Ако нађете мало редовног израза који желите да украдете, али не можете да га натерате да ради са пречицама, или једноставно не изгледа како треба, проверите у ком је укусу написано!
Веб локације и референце које ће вам помоћи да почнете да учите регуларни израз помоћу пречица
Још једна ствар коју желим да покријем пре него што почнемо да истражујемо стварну механику писања регуларног израза су ресурси. Никако не тврдим да је овај пост исцрпан ресурс за учење регуларног израза. Само треба да буде корисна полазна тачка за оне који желе да користе регек са пречицама.
Ако желите да зароните дубље у регек или сматрате да вам овај чланак не пружа помоћ која вам је потребна, можете погледати неке од ових чланака, водича и алата:
- https://regex101.com – Веб локација која вам омогућава да тестирате свој код регуларног израза у реалном времену.
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Варалица када заборавите шта сваки лик ради
- http://www.rexegg.com – Ова веб локација је свеобухватан ресурс за учење свега што треба да знате о редовном изразу. Погледајте ово ако желите да будете вешти са редовним изразима.
- https://scottwillsey.com/blog/ios/regex1/ – Ово је четвороделна серија блогова о коришћењу редовног израза са пречицама. Користим сасвим другачији приступ од овог водича, тако да би требало да буде леп пратећи низ овог чланка.
- Стацк Оверфлов и Реддит су добре веб странице за дељење питања о регуларним изразима и напредак да бисте добили савете и одговоре.
Ови ресурси се разликују од оних наведених у Ако не желите да научите како да користите регек са апликацијом Пречице одељак јер ће сви захтевати да заиста почнете да учите регуларни израз. Они су свеобухватнији, док су остали само референтне тачке.
Како извршити основну претрагу текста користећи регуларни израз са пречицама
У реду! Сада смо дошли до тачке коју су сви чекали: Научићемо основе коришћења редовног израза са пречицама.
Почнимо са основном претрагом, јер је ово најједноставнија ствар коју можете да урадите са регуларним изразом. Као што је већ поменуто, препоручујем да се регек101.цом отвори на другој картици како бисте могли да пратите.
У свом најосновнијем смислу, регуларни израз ће тражити (или утакмица) шта год да унесете у њега. На пример, ако бих куцао У реду
као мој код регуларног израза, он би пронашао сваку инстанцу речи „У реду“ у овом водичу.
Важни су велика и мала слова, размак и интерпункција. То значи да У реду
, у реду
, У реду!
, и у реду ,
сви ће дати различите резултате.
И то је то! Кад год унесете нешто у претрагу регуларног израза без употребе специјалних знакова, регуларни израз ће одговарати свему што се тачно поклапа са оним што сте унели.
Постоји једна квака! Неки знакови на вашој тастатури су такође специјални регуларни знакови. То значи да они обављају неку врсту функције у коду регуларног израза.
Тхе ?
симбол је један од таквих знакова. Користи се у коду регуларног израза као квантификатор. Дакле, ако покушате да тражите „У реду?“ куцањем у реду?
као ваш код регуларног израза, нећете добити оно што желите.
Да бисте ово поправили, морате навести да желите да користите „?" као стринг, а не као посебан карактер. Да бисте то урадили за овај или било који други лик, само додајте а \
симбол непосредно испред карактера чија посебна својства желите да поништите.
Дакле, ако желите да тражите „У реду?“ са регуларним изразом, ваш код ће изгледати овако:
У реду\?
Ако нисте сигурни да ли се одређени знак третира као посебан знак помоћу редовног израза, можете проверити ову варалицу за све специјалне знакове у регуларном изразу.
Потражите више од једне речи користећи знак „или“.
Још једна важна компонента тражења стрингова помоћу регуларног израза је коришћење функције „или“. Ово је знак који можете поставити између две речи/лика да бисте рекли: „Упари ово или ово“.
На пример, ако желим да претражим део текста за речи „у реду“ и „у реду“, користио бих |
карактера. Овако:
У реду|у реду
Ако вам је тешко да пронађете |
карактера, држите смена притисните доле и притисните \
кључ. То је изнад повратак тастер на већини тастатура.
Додавање променљивих компоненти вашим претрагама регуларних израза
У реду, сада када знате какав је неутрални регуларни израз, време је да покупите свој први специјални знак. То би биле угласте заграде, а то су ове ствари []
.
Шта год да ставите у ове заграде сматраће се променљивом компонентом ваше претраге регуларних израза. Можете ставити онолико знакова у заграде колико желите, иако ће само један бити важећи по подударању.
У реду, то звучи мало компликовано, али није! Ево како то изгледа у пракси:
-
[А] у реду
само ће одговарати речи „У реду“. Некако бесмислено. -
[АБ] у реду
ће одговарати и „У реду“ и „Блригхт“. -
Алр[иоукиз]гхт
ће одговарати „У реду“, „У реду“, „У реду“, „Алркгхт“, итд.
Можете комбиновати знакове унутар заграда, као и користити више заграда у истој линији редовног израза. [АБ]р[и1]гх[туввкиз]
је важећи део регуларног израза. Надајмо се, међутим, да не изгледа баш тако хаотично као што је могло изгледати пре неколико минута!
Опсези могу проширити вашу претрагу
Следећи део редовног израза који ће бити користан са пречицама је опсег. Опсези вам омогућавају да одредите опсег знакова које ћете прихватити.
У претходном одељку, можда сте приметили да моје заграде укључују много узастопних слова. Најдуже је било [туввкиз]
. Та слова се појављују у абецеди истим редоследом, једно поред другог.
То значи да бих могао да користим опсег уместо да их куцам. То би изгледало овако:
у реду[т-з]
Овај део кода редовног израза ће радити исту ствар као у реду[туввкиз]
. Само је уредније и лакше писати.
Можете заменити исти опсег са [а-з]
ако желите да прихвати било које мало слово из абецеде. Или бисте могли користити [0-9]
ако желите да прихватите било који једноцифрени број.
Такође можете комбиновати опсеге унутар исте заграде. На пример, ово Алр[и-ук-з]гхт
прихватиће „У реду“, „У реду“, „Алркгхт“ и „У реду“, али неће прихватити „У реду“ или „Алрвгхт“.
Постоје и друге варијације речи „У реду“ које ће овај код прихватити, иначе, и многе друге које неће. То је само кратак избор да ствари буду кратке.
Ако вам је тешко да разумете шта [и-ук-з]
значи, могло би помоћи да се види овако написано:
[и-у, к-з]
То није исправна синтакса регуларног израза – не би требало да користите зарез за раздвајање опсега. Али надамо се да ће то помоћи да има више смисла!
Не требају вам зарези у редовном изразу да бисте одвојили опсеге и не морате да стављате опсеге један поред другог. Можете га променити у [и-уабцк-з]
. Ово би прихватило исте опсеге као и раније плус знакове „а“, „б“ и „ц“.
Како да искључите речи и знакове из ваших претрага регуларних израза помоћу пречица
У реду, сада стижемо негде! Ако сте пратили овај чланак до ове тачке, требало би да будете у могућности да погледате код у наставку и разумете чему он одговара:
Ап[п-р]ле[Тт]оол[БбЛФ]ок
Ако можете да га прочитате, онда знате да део кода редовног израза укључује много могућих варијација речи „АпплеТоолБок“. Па шта ако желимо да смањимо број варијација које прихвата без промене нашег опсега?
Ту долази знак „не“. изгледа овако: ^
. Ако вам је тешко да га пронађете на тастатури (као ја), сачекајте смена и притисните тастер 6 тастер на вашој тастатури.
Да бисте користили ^
знак, поставите га на почетак знака који желите да искључите.
Постоји квака! Тхе ^
карактер не ради ван функције регуларног израза. Не можете га само ставити испред слова „А“ да би искључило то слово из ваше претраге. Код регуларног израза ^А
само ће тражити велико „А“.
Уместо тога, комбинујте га са заградама и другим специјалним знаковима регуларног израза.
На пример, ако бих желео да потражим било коју инстанцу речи „У реду“ која не почиње словом „А“, користио бих код [^А]У реду
.
Можете га чак комбиновати са распонима! Само га ставите на почетак ваше заграде, и све унутар те заграде, укључујући опсеге, биће искључено из ваше претраге. Овако:
Шта ако желите да искључите одређену реч из ваше претраге?
Било ми је тешко да пронађем ову информацију. Међутим, корисник Стацк Оверфлов-а је имао решење и оно изгледа овако:
^(?!(реч)$).+$
Само замени реч
са било којом речју коју желите да искључите из ваше претраге. Овако:
Можете прочитати ту објаву Стацк Оверфлов овде ако желите да сазнате више о овом конкретном случају употребе.
Замјенски знакови вам могу дати више опција за претрагу
То нас доводи до џокер знакова. Заобилазни знак, који је тачка .
, користи се за представљање било ког појединачног знака, без икаквог. Ако само куцате .
као ваш код регуларног израза са пречицама, он ће вратити сваки појединачни знак у телу текста као појединачно подударање.
Не бих препоручио да га користите у ту сврху, наравно! Уместо тога, препоручујем да га користите уместо једног знака у речи. На пример, Алр.гхт
ће одговарати „У реду“, „Алркгхт“, „Алр
И то је скоро све! Заменски знак је прилично лако разумети. Поклапа се са свиме! То га чини корисним за проналажење низова који одговарају одређеном формату, а имају јединствене знакове.
На пример, мејлови ће изгледати прилично слично, а да не буду исти. Заобилазни знак вам може помоћи да комбинујете елементе за које знате да ће бити тамо (као што су „.цом“ и „@“) са знаковима које не знате (попут „ми_емаил567“, иЦлоуд или „Гмаил“).
Још један занимљив случај употребе је коришћење .
карактер да бисте пронашли низове одређене дужине.
На пример, ако желим да пронађем сваки низ од четири карактера у телу текста, добро би ми дошло ...
са размаком на обе стране.
А ево свих низова од седам знакова у истом делу текста:
Имајте на уму да ово није савршен метод за проналажење жица одређене дужине. Као што можете видети у горњим примерима, неки низови се подударају који не би требало да буду, а неки који би требало да буду занемарени. Само је занимљиво запамтити да можете користити .
карактер за бројање знакова.
Такође, имајте на уму да је .
је посебан знак у редовном изразу. То значи да ћете морати да додате а \
испред њега ако желите да тражите тачке. То значи да бисте морали да користите У реду\.
да одговара „У реду“.
Користите квантификаторе да бисте одредили дужину текста који тражите
У реду, тако да можете технички користити .
карактер да бисте пронашли низ који заузима одређени број знакова. Међутим, већину времена ћете желети да будете конкретнији.
Ту долазе квантификатори. Квантификатори вам омогућавају да одредите дужину стринга који тражите када користите регек са пречицама.
На пример, рецимо да желите да пронађете било коју реч која има тачно три слова. Да бисте то навели, желећете да користите ове заграде:
{}
Када поставите ове заграде после ових []
заградама, наводите да желите стринг који одговара броју знакова унутар овога {}
и опсег знакова наведених у овом []
.
Сигуран сам да то сада нема много смисла, па погледајмо пример!
Рецимо да желите да пронађете било које године поменуте у тексту. Пошто се година састоји од четири броја (очигледно не сваке године од свих времена, само ме пратите овде), можете користити овај код за подударање година унутар тог текста:
[0-9]{4}
Овај код каже да желимо стринг састављен од знакова од 0 до 9 који је специфично дугачак четири знака. Можете видети како лоцира овај специфични низ на следећем снимку екрана:
Требало би да приметим да постоје неки проблеми са овим кодом регуларног израза, а то је да не узима у обзир размаке или интерпункцију. Дакле, ако код пронађе број дужи од четири знака, попут „12345678“, наћи ће низ „1234“ и стринг „5678“.
Да бисте решили овај проблем, желели бисте да додате размак на почетак кода и заграду после {4}
који садржи још један размак, тачку, упитник, зарез и узвичник. На тај начин ће превидети дугачке низове бројева без пропуштања низова бројева који имају интерпункцију на крају уместо размака.
Можда бисте такође желели да користите квантификаторе да бисте навели више од једне дужине низа. На пример, можда желим да пронађем стринг дужине четири карактера, али и седам и једанаест. Ево како би то изгледало:
[а-з]{4,7,11}
Постоји још неколико квантификатора о којима бисте желели да знате
Ок, значи још увек има још квантификатора! Ових последњих неколико квантификатора служе када желите да наведете дужину низа, а да не будете превише специфични.
На пример, рецимо да желите да пронађете стринг било које дужине са којом се регуларни израз може подударати. Као име! Имена (у западним земљама) почињу једним великим словом и завршавају се насумичним бројем малих слова, након којих следи размак. Да бисте пронашли име, написали бисте следећи код:
[А-З][а-з]*
[А-З]
специфицира да први карактер стринга треба да буде велико слово. [а-з]*
наводи да остатак стринга треба да буде састављен од малих слова, али није важно колико слова следи. А размак на крају значи да ће завршити утакмицу када пронађе размак на крају малих слова.
Златна комбинација у регуларном изразу је .*
. То значи бесконачно подударање са било којим карактером. Другим речима, одговараће целом тексту као једној ставци.
Следећи квантификатор који ћете морати да знате је +
. Овај је баш као *
осим што се неће подударати са низом са нула знакова. *
ће одговарати било којој дужини стринга, што укључује низове који немају дужину. +
, с друге стране, треба стринг са најмање једним знаком или више.
На крају, ту је ?
квантификатор. Ово је чудно. Одређује да је низ дужине нула знакова или један знак. То је то - или ништа или само једно. Дакле, ако користите код [а-з]?
са размаком на почетку и на крају, тражиће појединачна слова унутар текста.
Потражите знакове на почетку и на крају низа текста
Приближавамо се крају нашег водича о коришћењу редовног израза са пречицама! Постоје само још две врсте кода редовног израза које ћете користити са пречицама.
Први су знакови који вам омогућавају да упарите низове на основу тога како почињу и/или завршавају.
Када није у заградама, ^
улога лика се мења од значења „искључи“ у „почиње са“. Одређује да стринг треба да почиње са оним што желите. На пример, ако пишете ^А
, који би одговарао слову „А“ у низовима „У реду“, „Аппле“ и „А“.
Међутим, не одговара целој речи. За то бисте морали да га промените у ^А[А-За-з]*
. То ће одговарати првој речи пасуса/низа, све док та реч почиње великим „А“.
Као споредну напомену, можете написати [А-За-з]
као [А-з]
. То значи исто, само сматрам да је прво мало јасније када учите.
Да бисте одредили крај стринга, желећете да користите $
карактера. Ради исто као и ^
карактера. Једина разлика је што то пишете на крају заграде/низа, а не на почетку.
На пример, ако желите да пронађете стрингове/параграфе који се завршавају са „ле“, користили бисте код [А-з]*ле$
. То ће одговарати „Табела“, „јабука“ и „способно“ све док су на крају низа или пасуса.
Регек ће чак порећи ово подударање ако постоји размак или знак интерпункције на крају низа. "Сто." неће се подударати са овим кодом.
Да бисте то поправили, можете узети у обзир интерпункцију. Овај код узима у обзир различите облике интерпункције и размака који се могу појавити на крају низа, укључујући знак интерпункције иза којег следи размак:
[А-з]*(ле[\.\?!, ]?[ ]?)$
Тај код ће одговарати „Могуће“, „табела.“, „стабилно“ и „способно? “.
Чувајте текстуалне низове користећи функцију груписања редовног израза са пречицама
У реду! Дошли сте до краја нашег водича за АпплеТоолБок о коришћењу редовног израза са пречицама. Остала је још само једна функција регуларног израза за учење, а то је груписање.
Груписање је вероватно најважнија карактеристика редовног израза јер вам омогућава да радите ствари са кодом регуларног израза који пишете. Без тога, регек је само функција претраге. Може вам рећи само да ли стринг постоји унутар већег корпуса текста, тј. вратиће „тачно“ или „нетачно“.
Међутим, помоћу груписања можете сачувати резултате свог редовног израза. А то значи да можете копирати подударања, складиштити их у променљиве, заменити их другим текстом, модификовати њихово обликовање и све остало што бисте желели да радите са регуларним изразом.
На срећу, груписање је супер лако! Само ставите све што желите да групишете у заграде ()
. Шта год да ставите у заграде биће третирано као група.
Ако ставите цео ред кода редовног израза унутар заграда, нпр (.*@.*\..{3})
, тада ће та група бити запамћена по вашем коду, што ће омогућити да се касније поново позове.
Важно је да користите групе само кад год је то потребно. Пошто су ускладиштени у меморији, могу да доведу до смањења перформанси вашег кода. Сачувајте групе када су потребне!
Групе можете користити и за организацију
Такође можете да користите групе да организујете свој код редовног израза помоћу пречица. Када то урадите, група унутар заграда неће нужно бити запамћена.
На пример, реците да желим да ускладим реч „Здраво“, осим што ме није брига које је последње слово. То може бити било које мало или велико слово или чак број. „Хелл3838дјдјајакскс“ и „Хелло“ треба рачунати као подударања. „Пакао“, с друге стране, не треба рачунати.
Да би ово функционисало, пишем код Пакао[А-з]|[0-9]+
. Али ово је резултат који добијам:
Разлог зашто се не поклапа са начином на који сам очекивао је тај што +
примењује се само на [0-9]
заграда. Треба ми да се примени на обе заграде.
Поред тога, овај код каже да желим било шта пакао [А-з]
или[0-9]
. Дакле, подудара се за речи које почињу са „Пакао“ и завршавају се словом, или тражи низ бројева. Оно што ми заправо треба је да се подудара са примерима речи „пакао“ који се завршавају словом или бројем.
Да поправим ово, могу користити групу и преписати код као Пакао([А-з]|[0-9])+
. Сада тражи реч „пакао“ иза које следи било које слово или број. И зато што је +
се примењује на обе заграде, може бити било која комбинација слова и бројева, све док постоји бар једно слово или број.
Као што можете видети на слици испод, ова група решава мој проблем без обавезног складиштења информација у тој групи:
Шта сад?
И то је то! То је скоро све што бисте икада желели да знате о коришћењу редовног израза са пречицама. Надајмо се да се осећате довољно самопоуздано да сада почнете да експериментишете са редовним изразима, чак и ако вам то у почетку није имало смисла.
Сада када знате основе редовног израза, спремни сте да почнете да га користите у својим пречицама! Пречице прихватају унос регуларног израза у следећим радњама:
- Текст подударања
- Замени текст
Користећи ове две пречице, можете уметнути регек у своје пречице.
Упарите ово са могућностима аутоматизације пречица и имате на располагању прилично моћан алат.
Можете да користите регек да бисте олакшали форматирање текста у пречицама, да бисте извукли информације из е-поште, текстова, веб локација, датотеке и догађаји у календару, креирају текст који прати одређени формат, провери да ли је унос исправно унет и више.
На пример, рецимо да желите да се подударају за имејлове. Можда треба да проверите да ли је низ текста порука е-поште, или можда желите да извучете имејл(е) из текста.
Како бисте ово рашчланили?
Па, знате да ће основна структура е-поште бити нека комбинација слова, бројева и знакова, праћених симболом „@“, а затим након чега следи назив веб-сајта као што је Гмаил или иЦлоуд, а затим следи „.цом“, „.орг“ или нека друга врста три карактера највишег нивоа домена.
Да бисте то написали у регуларном изразу, морате да наведете да желите низ од најмање једног знака који одмах следи симболом „@“, затим још једним низом од најмање једног знака, након чега следи „.“, а затим низом од три ликова. То би изгледало овако:
[е-маил заштићен]+\..{3}
Ако ово залепите у Текст подударања или Замени текст радње у пречицама, имаћете аутоматизацију која може да пронађе, ускладишти и манипулише адресом е-поште.
Можете користити ову врсту решавања проблема да смислите сопствена решења за регуларне изразе или да пронађете нека која су други направили на мрежи!
Почните да користите регуларни израз са пречицама да бисте своју аутоматизацију подигли на виши ниво
И то је, пријатељи, заиста то. Надам се да сте уживали у праћењу овог чланка! Ово је једно од најамбициознијих дела које сам икада написао за АпплеТоолБок. Морао сам себе да научим регуларни израз да га напишем, и надам се да сам на тај начин могао да вам помогнем да га научите.
Коришћење редовног израза са пречицама се не разликује од учења како да урадите било шта друго на паметном телефону или рачунару. Само уложите мало времена и стрпљења и на крају ћете стићи тамо.
За више водича, туторијала и вести о свему што је Аппле, погледајте остатак блог АпплеТоолБок.
У реду [А-З][а-з]+
, видимо се следећи пут!