Hur man börjar använda Regex med genvägsappen

Under den senaste månaden eller så har jag täckt genvägarna och Automator-apparna på iOS respektive macOS. Båda är kraftpaket när det kommer till automatisering i Apples ekosystem, och från och med macOS Monterey i höst kommer Genvägar att vara den bästa automatiseringsappen på alla Apple-enheter. Det är därför jag ville ägna den här artikeln åt att diskutera ett mycket kraftfullt ämne: Använda regex med appen Genvägar.

Även om jag har en viss bakgrund inom datavetenskap och programmering, hade jag på något sätt aldrig stött på regex. Kanske skrämde namnet mig, eller så var det koden, som är någon av de minst läsbara koder jag någonsin sett.

Hur som helst, jag bestämde mig för att titta närmare på regex efter att ha täckt appen Genvägar under de senaste månaderna. Och vad jag upptäckte var att många av de begränsningar jag hade stött på med genvägar, såväl som Automator, kunde övervinnas med regex.

Med andra ord, det var inte så att dessa appar saknade funktioner, utan att jag saknade utbildning.

Så i dagens inlägg ska du och jag lära oss detaljerna i regex tillsammans. På så sätt kan du få ut det mesta av var och en av dessa appar.

Vi kommer att täcka grunderna i regex (börjar med vad det är), vad du kan göra med det i appen Genvägar, vissa webbplatser och resurser du kan använda om du inte känner för att lära dig regex själv, och sedan går vi in ​​på kärnkoncepten och mekaniken för det regex språk.

Okej, låt oss komma igång!

Innehåll

  • Vad är reguljära uttryck (d.v.s. regex)?
    • Saker du kan göra med regex
  • Hur kan du använda regex med appen Genvägar?
  • Använd regex101.com för att testa dina reguljära uttryck
  • Om du inte vill lära dig hur du använder regex med appen Genvägar, läs detta
  • Regex för nybörjare: Börja använda regex med genvägar
    • Vad är regex-smaker?
    • Webbplatser och referenser som hjälper dig att börja lära dig regex med genvägar
    • Hur man utför en grundläggande textsökning med regex med genvägar
    • Lägga till variabla komponenter i dina regex-sökningar
    • Områden kan bredda din sökning
    • Så här utesluter du ord och tecken från dina regex-sökningar med genvägar
    • Jokertecken kan ge dig fler sökalternativ
    • Använd kvantifierare för att ange längden på texten du letar efter
    • Det finns några fler kvantifierare du vill veta om
    • Sök efter tecken i början och slutet av en textsträng
    • Lagra textsträngar med hjälp av grupperingsfunktionen för regex med genvägar
  • Nu då?
    • Hur skulle du bryta ner detta?
  • Börja använda regex med genvägar för att ta din automatisering till nästa nivå
    • Relaterade inlägg:

Vad är reguljära uttryck (d.v.s. regex)?

Ett reguljärt uttryck, eller "regex", är en bit kod som du kan använda för att söka efter en textbit inuti en större textbit.

Om du inte vet så kallas en textbit i en annan textbit en "sträng" i programmering. Till exempel är ordet "grön" en rad tecken från texten "Jag bar gröna byxor idag."

Så uttryckt på ett annat sätt är regex ett sätt att lokalisera en textsträng i en större text. Och eftersom regex är skrivet i kod kan du använda det för att utföra några ganska komplexa operationer.

Om du till exempel vill söka efter ordet "e-post", kan du enkelt skriva en regex-kod som söker efter e-post.

Om du dock vill hitta ett e-postmeddelande som finns i ett stycke och inte vet exakt vad det är, måste du söka efter en textsträng som är formaterad som ett e-postmeddelande. d.v.s. en sträng som följer "[e-postskyddad]" format.

Låt oss nu säga att du inte bara vill hitta ett e-postmeddelande från ett stycke utan varje e-post. Kanske vill du snabbt kopiera dem någon annanstans, uppdatera dem till ett nytt format eller ersätta dem så att de alla säger "[e-postskyddad]“.

När du blir allt mer skicklig och erfaren med regex, kommer du att kunna göra alla dessa saker och mer.

Saker du kan göra med regex

Okej, så kanske exemplen med e-post jag just gav inte är så praktiska. Oroa dig inte – det är långt ifrån gränsen för vad du kan åstadkomma med regex med appen Genvägar.

Generellt sett faller allt som regex kan göra i en av dessa fyra kategorier:

  1. Hitta en textsträng i en större textbit (dvs. söka efter ett ord/sträng/typ av sträng på en sida med text).
  2. Bekräfta att en textsträng matchar ditt önskade format (dvs. kontrollera att en textsträng är versal/ordnad/avbruten korrekt).
  3. Ersätt eller infoga text i ett specifikt område av en text.
  4. Dela upp en textsträng på angivna punkter (t.ex. dela en textbit varje gång det finns ett kommatecken).

Nivån av djup som du kan använda för att interagera med var och en av dessa typer av funktioner och hur du kan kombinera dem gör regex till ett otroligt kraftfullt verktyg för att analysera och manipulera text.

Hur kan du använda regex med appen Genvägar?

Okej, så nu har du förhoppningsvis en grundläggande uppfattning om vad regex används för. Det är en typ av kod som du kan använda för att söka efter text, även om du inte vet exakt vad den texten är.

Så hur hjälper detta dig i genvägar? På samma sätt som att lägga till skript till dina genvägar, är det ett sätt att gå från grundläggande automatiseringar (Sms: a mig när ytterdörren öppnas) till mer avancerade alternativ (Skapa automatiskt en kalenderhändelse för mina möten varje gång jag får ett e-postmeddelande för ett Zoom-möte från jobbet).

Du kan använda regex med genvägar för att kontrollera att en inmatning är korrekt. Om du till exempel skapar en genväg som bara fungerar med URL: er kan du använda regex i början av genvägen för att se till att användaren kör automatiseringen på en URL.

Du kan kombinera regex med skript för att skapa kraftfulla genvägar. Till exempel, denna genväg använder regex och skript för att förvandla en streckkod till en URL för din favoritbutik.

När du använder appen Genvägar på Mac (kommande hösten 2021) kan du använda regex för att utföra batchåtgärder på en textbit. Du kan till exempel kopiera alla e-postmeddelanden i ett urval av text som en ordnad lista. Eller så kan du ersätta alla namn i ett dokument med "*"-tecken för att säkerställa sekretess.

Du kan till och med kopiera en text från en app, formatera om den så att den matchar inställningarna för en annan app och sedan klistra in den i den andra appen, allt med en enda högerklicksåtgärd.

Regex ger dig med andra ord total kontroll över texthantering med appen Genvägar. Det kanske inte låter särskilt användbart i början, men nu när du vet att det finns, kommer du säkert att börja märka hur många genvägar som kan förbättras med den här funktionen. Och du kommer också att märka att många genvägar inte ens är möjliga utan regex.

Använd regex101.com för att testa dina reguljära uttryck

När du börjar använda regex med genvägar kommer du att stöta på en frustration:

Det är verkligen svårt att testa din regex-kod. Och det är inte unikt för regex. Att testa vad som helst med appen Genvägar är lite jobbigt. Det enda sättet att göra det är att köra genvägen. Den metoden är inte dålig när du bara testar inbyggda genvägsfunktioner.

Men för att testa kod tillåter detta inte kontroll rad för rad och det ger inte mycket feedback.

För det rekommenderar jag att du använder regex101.com. Det är en webbplats som du kan skriva regex-kod på i realtid. Du kan också skriva text i en textredigerare på samma webbsida. När du skriver varje, kommer du att se om ditt regex fungerar, varför det fungerar eller inte fungerar, och få information om de träffar som hittats.

regex101.com använder en annan variant av regex än den som stöds av genvägar (mer om det på en minut), men det är tillräckligt nära för att du inte ska stöta på för många problem.

Att använda det här verktyget är bra eftersom du kan skriva ditt regex där först och sedan kopiera det till appen Genvägar när det fungerar som det är tänkt.

Om du inte vill lära dig hur du använder regex med appen Genvägar, läs detta

Jag förstår – inte alla kommer att vilja lära sig hur man använder regex med genvägar. Det är en färdighet, och det betyder att det kommer att kräva tid och övning. Det är inte i närheten av så enkelt som resten av dra-och-släpp-funktionerna i appen Genvägar.

Inga problem! Även om du inte kommer att kunna få ut så mycket av appen Genvägar som någon som lägger ner tid på att lära sig regex, finns det fortfarande alternativ tillgängliga för dig. Det finns nämligen sajter och sidor på nätet där folk har skapat en lista med regex-kodbitar som du kan kopiera och klistra in i appen Genvägar.

Här är några länkar som du kan kolla in om du inte vill lära dig regex:

  • 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

Läs bara igenom dessa länkar så borde du kunna hitta vanliga regexlösningar till genvägar du vill göra. Detta kommer inte att vara ett utbildningsfritt alternativ, eftersom det fortfarande kommer att ta lite tid att få kläm på vad du tittar på. Men det är mycket enklare och en idealisk lösning för någon som inte har tid att lägga in regex.

Som sagt, jag måste erkänna att regex inte är så svårt att lära sig, speciellt om du har lite erfarenhet av skalkod eller nybörjarprogrammering. Regex lät som skratt för mig först, men efter en timmes läsning av artiklar och lek med regex101.com kunde jag börja skriva regex för mina genvägar.

Det är bara en bekant sak – när du tittar på det tillräckligt länge kommer det att sluta se så konstigt ut. Så om du har tid och bara är skrämd, var inte det!

Regex för nybörjare: Börja använda regex med genvägar

Okej, nog med förord! Du bör ha en uppfattning om vad regex är, vad det kan göra, varför du bör lära dig det och tillräckligt med information för att avgöra om du vill lära dig det. Nu ska vi gå in på det töntiga.

Det finns mycket innehåll nedan, men oroa dig inte! Den här artikeln kommer att bli mer av en studieguide. Jag rekommenderar att skumma över varje avsnitt så att du får en uppfattning om mekaniken som regex använder. Detta bör också hjälpa dig att linda huvudet runt det också, om du fortfarande är förvirrad över vad regex är.

När du har skummat igenom saker rekommenderar jag att du öppnar regex101.com och spelar med vart och ett av verktygen i varje avsnitt nedan. Det hjälper dig att se hur koncepten ser ut i praktiken samt förbättra ditt minne. När du har gjort det kan du bara behandla den här artikeln som en referenspunkt - något du kan återkomma till när du glömmer det vanliga med regex.

Okej då drar vi!

Vad är regex-smaker?

Först ska vi titta på regex-smaker. Oroa dig inte – detta påverkar inte din dagliga användning av regex med genvägar. Det är bara något att vara medveten om innan du sätter igång.

Det finns olika versioner av regex som är kända som "smaker". Dessa olika versioner är fortfarande väldigt lika. Om du kan lära dig att läsa och skriva en smak bör du kunna läsa vilken som helst av dem. Det kommer bara att finnas små skillnader i hur din regex-kod ska formateras.

Inom programmering är dessa formateringsspecifikationer kända som "syntax". Det är bara så du måste skriva din kod för att den koden ska förstås av appen du skriver den i.

Här är varför syntax är viktigt

"Hej vän, hur går din dag?"

", går vän? din hej dag hur”

Båda meningarna har samma ord, tecken och mellanslag. Men bara en är vettig, och det är för att den följer konventionell syntax.

Vid kodning kan ett programmeringsspråk förstå den första versionen men inte den andra. För ett annat programmeringsspråk kan dock det andra vara helt vettigt medan det första ser ut som trams. För någon som kan engelska, men du kan förmodligen förstå avsikten med båda raderna, även om en kommer att kräva lite arbete för att förstå innebörden av.

Det är (typ) vad de olika smakerna av regex är. De kommer alla att se lite olika ut och lite lika dig. Men du måste använda rätt smak för appen du använder, annars har den appen ingen aning om vad du har skrivit.

Genvägar-appen förstår ICU-smaken av regex, så det är den smaken du vill använda. Sajten regex101.com har några olika smaker som du kan välja mellan till vänster på sidan. Den använder dock PCRE, vilket är ganska likt ICU.

Det är viktigt att veta att det finns olika smaker av regex eftersom du utan tvekan kommer att stöta på olika smaker online. Om du hittar lite regex som du vill stjäla men inte kan få det att fungera med genvägar, eller om det bara inte ser rätt ut, kolla vilken smak det är skrivet i!

Webbplatser och referenser som hjälper dig att börja lära dig regex med genvägar

En annan sak jag vill täcka innan vi börjar utforska den faktiska mekaniken för att skriva regex är resurser. Jag påstår inte på något sätt att det här inlägget är en uttömmande resurs för att lära sig regex. Det är bara tänkt att vara en användbar utgångspunkt för dem som vill använda regex med genvägar.

Om du vill dyka djupare in i regex eller känner att den här artikeln inte ger dig den hjälp du behöver, kan du kolla in några av dessa artiklar, guider och verktyg:

  • https://regex101.com – En webbplats som låter dig testa din regex-kod i realtid.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Ett fuskblad för när du glömmer vad varje karaktär gör
  • http://www.rexegg.com – Den här webbplatsen är en omfattande resurs för att lära dig allt du behöver veta om regex. Kolla in den här om du vill bli skicklig med regex.
  • https://scottwillsey.com/blog/ios/regex1/ – Det här är en bloggserie i fyra delar om hur man använder regex med genvägar. Jag har ett helt annat tillvägagångssätt än den här guiden, så det borde bli en trevlig följeslagare till den här artikeln.
  • Stack Overflow och Reddit är båda bra webbplatser för att dela dina regex-frågor och framsteg för att få råd och svar.

Dessa resurser skiljer sig från de som anges i Om du inte vill lära dig hur du använder regex med appen Genvägar eftersom de alla kommer att kräva att du faktiskt börjar lära dig regex. De är mer omfattande, medan de andra bara är referenspunkter.

Hur man utför en grundläggande textsökning med regex med genvägar

OK! Vi har nu kommit till den punkt som alla har väntat på: Vi ska lära oss grunderna för att använda regex med genvägar.

Låt oss börja med en grundläggande sökning, eftersom detta är det enklaste du kan göra med regex. Som nämnts tidigare rekommenderar jag att ha regex101.com öppnad på en annan flik så att du kan följa med.

Som mest grundläggande kommer regex att söka efter (eller match) vad du än skriver i den. Till exempel om jag skulle skriva OK som min regex-kod skulle den hitta varje instans av ordet "Okej" i den här guiden.

Skiftläge, mellanrum och skiljetecken spelar roll. Det betyder att OK, OK, OK!, och OK , alla kommer att ge olika resultat.

Och det är allt! När du skriver något i en regex-sökning utan att använda några specialtecken, matchar regex allt som exakt matchar det du skrev.

Det finns en hake! Vissa tecken på tangentbordet är också speciella regex-tecken. Det betyder att de utför någon form av funktion i regex-kod.

De ? symbol är ett sådant tecken. Det används i regex-kod som en kvantifierare. Så om du försöker söka efter "Okej?" genom att skriva OK? som din regex-kod kommer du inte att få vad du vill ha.

För att fixa detta måste du ange att du vill använda "?" som en sträng, inte som ett specialtecken. För att göra det för den här karaktären eller någon annan, lägg bara till en \ symbolen precis före karaktären vars speciella egenskaper du vill upphäva.

Så om du vill söka efter "Okej?" med regex kommer din kod att se ut så här:

OK\?

Om du inte är säker på om ett specifikt tecken behandlas som ett specialtecken av regex, kan du kontrollera detta fuskblad för alla specialtecken i regex.

Sök efter mer än ett ord med tecknet "eller".

En annan viktig komponent för att söka efter strängar med regex är att använda "eller"-funktionen. Det här är en karaktär som du kan placera mellan två ord/tecken för att säga, "Matcha det här eller det här."

Om jag till exempel vill söka efter ordet "okej" och "okej", skulle jag använda | karaktär. Såhär:

Okej|okej

Om du har svårt att hitta | tecken, håll flytta tryck ner och tryck på \ nyckel. Det är ovanför lämna tillbaka tangenten på de flesta tangentbord.

Lägga till variabla komponenter i dina regex-sökningar

Ok, så nu när du vet hur neutralt regex är, är det dags att plocka upp din första specialkaraktär. Det skulle vara hakparenteserna, som är dessa saker [].

Vad du än lägger inom dessa parenteser kommer att betraktas som en variabel komponent i din regex-sökning. Du kan sätta så många tecken inom parentes som du vill, men endast en kommer att vara giltig per matchning.

Okej, det låter lite komplicerat, men det är det inte! Så här ser det ut i praktiken:

  • [OK kommer bara att matcha ordet "Okej". Lite meningslöst.
  • [AB] okej kommer att matcha både "Alright" och "Blright".
  • Alr[iouxyz]ght kommer att matcha "Alright", "Ok", "Alrught", "Alrxght" och så vidare.

Du kan kombinera tecken inom parenteser samt använda flera parenteser i samma rad med regex. [AB]r[i1]gh[tuvwxyz] är en giltig del av regex. Förhoppningsvis ser det dock inte lika kaotiskt ut som det kunde ha sett för några minuter sedan!

Områden kan bredda din sökning

Nästa del av regex som kommer att vara användbar med genvägar är intervallet. Med intervall kan du ange ett intervall av tecken som du ska acceptera.

I föregående avsnitt kanske du har märkt att mina parenteser innehöll många bokstäver i följd. Den längsta var [tuvwxyz]. Dessa bokstäver visas i alfabetet i samma ordning, bredvid varandra.

Det betyder att jag kunde använda ett intervall istället för att skriva ut dem. Det skulle se ut så här:

Okej[t-z]

Denna del av regex-koden kommer att göra samma sak som Okej[tuvwxyz]. Det är bara snyggare och lättare att skriva.

Du kan byta ut samma sortiment med [a-z] om du ville att den skulle acceptera vilken liten bokstav som helst från alfabetet. Eller du kan använda [0-9] om du vill acceptera ett ensiffrigt nummer.

Du kan också kombinera intervall inom samma parentes. Till exempel detta Alr[i-ux-z]ght kommer att acceptera "Alright", "Alroght", "Alrxght" och "Alryght", men det accepterar inte "Alraght" eller "Alrvght".

Det finns andra varianter av ordet "Okej" som den här koden kommer att acceptera, förresten, och många fler som den inte kommer att acceptera. Det är bara ett kort urval för att hålla saker, ja, korta.

Om du har svårt att förstå vad [i-ux-z] betyder att det kan hjälpa att se det skrivet så här:

[i-u, x-z]

Det är inte korrekt syntax för regex – du bör inte använda ett kommatecken för att separera intervall. Men förhoppningsvis hjälper det det att bli mer vettigt!

Du behöver inte kommatecken i regex för att separera intervall och du behöver inte sätta intervall bredvid varandra. Du kan ändra det till [i-uabcx-z]. Detta skulle acceptera samma intervall som tidigare plus tecknen "a", "b" och "c".

Så här utesluter du ord och tecken från dina regex-sökningar med genvägar

Ok, så nu kommer vi någonstans! Om du har följt den här artikeln fram till denna punkt bör du kunna titta på koden nedan och förstå vad den matchar för:

App[p-r]le[Tt]ool[BbLF]ox

Om du kan läsa den vet du att den del av regex-koden inkluderar mycket möjliga varianter av ordet "AppleToolBox". Så vad händer om vi ville minska antalet varianter som den accepterar utan att ändra vårt utbud?

Det är där "inte"-karaktären kommer in. Det ser ut så här: ^. Om du har svårt att hitta det på ditt tangentbord (som jag gjorde), håll flytta och tryck på 6 tangenten på ditt tangentbord.

Att använda ^ placerar du det i början av det tecken du vill utesluta.

Det finns en hake! De ^ tecknet fungerar inte utanför en regex-funktion. Du kan inte bara placera den framför bokstaven "A" för att få den att utesluta den bokstaven från din sökning. Regex-koden ^A kommer bara att söka efter ett stort "A".

Kombinera det istället med parenteser och andra regex specialtecken.

Om jag till exempel vill söka efter någon instans av ordet "Okej" som inte börjar med bokstaven "A", skulle jag använda koden [^A] okej.

Du kan till och med kombinera det med serier! Sätt det bara i början av din parentes, och allt inom den parentesen, inklusive intervall, kommer att exkluderas från din sökning. Såhär:

Vad händer om du vill utesluta ett specifikt ord från din sökning?

Jag hade svårt att hitta denna information. En Stack Overflow-användare hade dock lösningen, och den ser ut så här:

^(?!(ord)$).+$

Byt bara ut ord med vilket ord du vill utesluta från din sökning. Såhär:

Du kan läsa det där Stack Overflow-inlägget här om du vill lära dig mer om detta specifika användningsfall.

Jokertecken kan ge dig fler sökalternativ

Det för oss till jokertecken. Jokertecken, som är en period ., används för att representera ett enskilt tecken, utan undantag. Om du bara skriver . som din regex-kod med genvägar kommer den att returnera varje enskilt tecken i en text som en individuell matchning.

Jag skulle naturligtvis inte rekommendera att använda den för det ändamålet! Istället rekommenderar jag att du använder det i stället för ett enda tecken i ett ord. Till exempel, Okej kommer att matcha "Okej", "Alrxght", "Alr

Och det är i stort sett det! Jokertecken är ganska lätt att förstå. Det matchar allt! Det gör det användbart för att hitta strängar som matchar ett specifikt format samtidigt som de har unika tecken.

E-postmeddelanden, till exempel, kommer alla att se ganska lika ut utan att vara desamma. Jokertecken kan hjälpa dig att kombinera element som du vet kommer att finnas där (som ".com" och "@") med tecken som du inte känner till (som "my_email567", iCloud eller "Gmail").

Ett annat intressant användningsfall är att använda . tecken för att hitta strängar av en viss längd.

Till exempel, om jag vill hitta alla fyra tecken långa i en text, kan jag använda ... med ett utrymme på vardera sidan.

Och här är alla strängarna med sju tecken i samma text:

Observera att detta inte är en perfekt metod för att hitta strängar av en viss längd. Som du kan se i exemplen ovan matchas vissa strängar som inte borde vara det, och några som borde ha ignorerats. Det är bara intressant att komma ihåg att du kan använda . tecken för att räkna tecken.

Tänk också på att . är ett specialtecken i regex. Det betyder att du måste lägga till en \ framför den om du vill söka på perioder. Det betyder att du måste använda OK\. för att matcha "Okej".

Använd kvantifierare för att ange längden på texten du letar efter

Okej, så du kan tekniskt använda . tecken för att hitta en sträng som tar upp ett visst antal tecken. För det mesta vill du dock vara mer specifik.

Det är där kvantifierare kommer in. Kvantifierare låter dig ange längden på strängen du letar efter när du använder regex med genvägar.

Säg till exempel att du vill hitta ett ord som är specifikt tre bokstäver långt. För att specificera det vill du använda dessa parenteser:

{}

När du placerar dessa fästen efter dessa [] parenteser, anger du att du vill ha en sträng som matchar antalet tecken i denna {} och det teckenintervall som anges i detta [].

Jag är säker på att det inte är så vettigt nu, så låt oss titta på ett exempel!

Säg att du vill hitta några årtal som nämns i en text. Eftersom ett år består av fyra siffror (uppenbarligen inte varje år från alla tider, följ mig bara här), kan du använda den här koden för att matcha år i texten:

[0-9]{4}

Den här koden säger att vi vill ha en sträng som består av tecken från 0 till 9 som är specifikt fyra tecken lång. Du kan se hur den lokaliserar den här specifika strängen i följande skärmdump:

Jag bör notera att det finns några problem med denna regex-kod, och det är att den inte tar hänsyn till mellanslag eller skiljetecken. Så om koden hittar ett nummer som är längre än fyra tecken, som "12345678", kommer den att hitta strängen "1234" och strängen "5678".

För att åtgärda detta problem skulle du vilja lägga till ett mellanslag i början av koden och en parentes efter {4} som innehåller ett annat mellanslag, en punkt, ett frågetecken, ett kommatecken och ett utropstecken. På så sätt kommer den att förbise långa strängar med nummer utan att sakna strängar med siffror som har skiljetecken i slutet istället för ett mellanslag.

Du kanske också vill använda kvantifierare för att ange mer än en stränglängd. Till exempel kanske jag vill hitta en sträng som är fyra tecken lång, men också sju och elva också. Så här skulle det se ut:

[a-z]{4,7,11}

Det finns några fler kvantifierare du vill veta om

Ok, så det finns fler kvantifierare fortfarande! Dessa sista kvantifierare är till för när du vill specificera längden på en sträng utan att vara för specifik.

Säg till exempel att du vill hitta en sträng av valfri längd som regex kan matcha. Som ett namn! Namn (i västländer) börjar med en stor bokstav och slutar med ett slumpmässigt antal små bokstäver, följt av ett mellanslag. För att hitta ett namn skriver du följande kod:

[A-Z][a-z]*

[A-Z] anger att det första tecknet i strängen ska vara en stor bokstav. [a-z]* anger att resten av strängen ska bestå av små bokstäver, men det spelar ingen roll hur många bokstäver som följer. Och mellanslag i slutet betyder att det kommer att avsluta matchningen när det hittar ett mellanslag i slutet av de gemener.

En gyllene combo i regex är .*. Det betyder att matcha vilken karaktär som helst i oändlighet. Med andra ord kommer det att matcha hela texten som ett objekt.

Nästa kvantifierare du behöver veta är +. Den här är precis som * förutom att den inte matchar en sträng med noll tecken. * kommer att matcha valfri längd på strängen, vilket inkluderar strängar som inte har någon längd. +, å andra sidan, behöver en sträng med minst ett tecken eller fler.

Till sist finns det ? kvantifierare. Det här är en udda. Den anger att en sträng är antingen noll tecken lång eller ett tecken lång. Det är det - antingen ingenting eller bara en. Så om du använder koden [a-z]? med ett mellanslag i början och slutet, letar den efter enstaka bokstäver i en text.

Sök efter tecken i början och slutet av en textsträng

Vi närmar oss slutet av vår guide om hur du använder regex med genvägar! Det finns bara två andra typer av regex-kod som du kommer att använda med genvägar.

Den första är tecken som låter dig matcha strängar baserat på hur de börjar och/eller slutar.

När det inte står inom parentes, ^ karaktärens roll ändras från att betyda "utesluta" till "börjar med". Den anger att en sträng ska börja med vad du vill. Till exempel om du skriver ^A, som skulle matcha bokstaven "A" i strängarna "Okej", "Apple" och "A".

Det matchar dock inte hela ordet. För det skulle du behöva ändra det till ^A[A-Za-z]*. Det kommer att matcha det första ordet i ett stycke/sträng, så länge det ordet börjar med ett stort "A".

Som en sidoanteckning kan du skriva [A-Za-z] som [A-z]. Det betyder samma sak, jag tycker bara att den första är lite tydligare när du lär dig.

För att ange slutet på strängen vill du använda $ karaktär. Det fungerar på samma sätt som ^ karaktär. Den enda skillnaden är att du skriver det i slutet av en parentes/sträng snarare än i början.

Om du till exempel ville hitta strängar/stycken som slutar med "le", skulle du använda koden [A-z]*le$. Det kommer att matcha "Tabell", "äpple" och "kapabel" så länge de är i slutet av en sträng eller ett stycke.

Regex kommer till och med att neka denna matchning om det finns ett mellanslag eller skiljetecken i slutet av strängen. "Tabell." kommer inte att matchas av den här koden.

För att fixa det kan du räkna in skiljetecken. Den här koden står för olika former av skiljetecken och mellanrum som kan förekomma i slutet av en sträng, inklusive ett skiljetecken följt av ett mellanslag:

[A-z]*(le[\.\?!, ]?[ ]?)$

Den koden kommer att matcha "Able", "table", "stable" och "capable? “.

Lagra textsträngar med hjälp av grupperingsfunktionen för regex med genvägar

OK! Du har kommit till slutet av vår AppleToolBox-guide om hur du använder regex med genvägar. Det finns bara en till regex-funktion kvar att lära sig, och det är gruppering.

Gruppering är utan tvekan den viktigaste funktionen hos regex eftersom det är det som låter dig göra saker med den regex-koden du skriver. Utan det är regex bara en sökfunktion. Den kan bara tala om för dig om en sträng finns i en större textkropp, dvs den kommer att returnera "true" eller "false".

Med gruppering kan du dock lagra resultaten av din regex-kod. Och det betyder att du kan kopiera matchningar, lagra dem i variabler, ersätta dem med annan text, ändra deras formatering och allt annat du skulle vilja göra med regex.

Lyckligtvis är gruppering superlätt! Sätt bara vad du vill gruppera inom parentes (). Vad du än sätter inom parentes kommer att behandlas som en grupp.

Om du sätter en hel rad med regex-kod inom parentes, som (.*@.*\..{3}), då kommer den gruppen att komma ihåg av din kod, vilket gör att den kan återkallas senare på raden.

Det är viktigt att du bara använder grupper när du behöver. Eftersom de är lagrade i minnet kan de göra att din kods prestanda minskar. Spara grupper för när de behövs!

Du kan också använda grupper för organisation

Du kan också använda grupper för att organisera din regex-kod med genvägar. När du gör detta kommer gruppen inom parentesen inte nödvändigtvis att komma ihåg.

Säg till exempel att jag vill matcha ordet "Hej", förutom att jag inte bryr mig om vad den sista bokstaven är. Det kan vara vilken liten eller stor bokstav som helst eller till och med en siffra. "Hell3838djdjajaksks" och "Hej" ska räknas som matchningar. "Helvetet" ska å andra sidan inte räknas.

För att få detta att fungera skriver jag koden Helvete[A-z]|[0-9]+. Men detta är resultatet jag får:

Anledningen till att det inte matchar som jag förväntade mig är att + tillämpas endast på [0-9] konsol. Jag behöver den för att applicera på båda fästena.

Dessutom säger den här koden att jag vill ha antingen Helvete[A-z]eller[0-9]. Så det är matchning för ord som börjar med "Helvete" och slutar med en bokstav, eller så letar det efter siffror. Vad jag faktiskt behöver är att det matchar instanser av ordet "Helvete" som slutar med en bokstav eller en siffra.

För att fixa detta kan jag använda en grupp och skriva om koden som Helvete([A-z]|[0-9])+. Nu letar den efter ordet "Helvete" följt av valfri bokstav eller siffra. Och eftersom + tillämpas på båda parenteserna kan det vara vilken kombination av bokstäver och siffror som helst, så länge det finns minst en bokstav eller siffra.

Som du kan se i skärmdumpen nedan löser den här gruppen mitt problem utan att nödvändigtvis lagra informationen inom den gruppen:

Nu då?

Och det är allt! Det är nästan allt du någonsin skulle vilja veta om att använda regex med genvägar. Förhoppningsvis känner du dig tillräckligt säker för att börja experimentera med regex nu, även om det inte var vettigt för dig först.

Nu när du känner till grunderna i regex är du redo att börja använda det i dina genvägar! Genvägar accepterar regex-inmatning i följande åtgärder:

  • Matcha text
  • Byt ut text

Genom att använda dessa två genvägar kan du infoga regex i dina genvägar.

Koppla ihop detta med automatiseringsfunktionerna i genvägar, så har du ett ganska kraftfullt verktyg till ditt förfogande.

Du kan använda regex för att göra formatering av text i genvägar enklare, för att hämta information från e-postmeddelanden, texter, webbplatser, filer och kalenderhändelser, skapa text som följer ett specificerat format, kontrollera att inmatningen har angetts korrekt och Mer.

Säg till exempel att du vill matcha för e-post. Kanske måste du kontrollera att en textsträng är ett e-postmeddelande, eller så kanske du vill hämta ett eller flera e-postmeddelanden från en text.

Hur skulle du bryta ner detta?

Tja, du vet att den grundläggande strukturen för ett e-postmeddelande kommer att vara en kombination av bokstäver, siffror och tecken, följt av "@"-symbolen, sedan följt av namnet på en webbplats som Gmail eller iCloud, som sedan följs av en ".com", ".org" eller någon annan typ av tre tecken på toppnivå domän.

För att skriva det i regex måste du ange att du vill ha en sträng på minst ett tecken lång som omedelbart följs av symbolen "@", sedan ytterligare en sträng med minst ett tecken, följt av ett ".", sedan följt av en sträng med tre tecken. Det skulle se ut så här:

[e-postskyddad]+\..{3}

Om du klistrar in detta i Matcha text eller Byt ut text åtgärder i genvägar, har du en automatisering som kan hitta, lagra och manipulera en e-postadress.

Du kan använda den här typen av problemlösning för att komma på dina egna regex-lösningar eller för att hitta några som andra har gjort online!

Börja använda regex med genvägar för att ta din automatisering till nästa nivå

Och det, vänner, är verkligen det. Jag hoppas att du tyckte om att följa den här artikeln! Det här är en av de mer ambitiösa texterna jag någonsin har skrivit för AppleToolBox. Jag var tvungen att lära mig regex för att skriva det, och jag hoppas att jag genom att göra det kunde hjälpa dig att lära dig det.

Att använda regex med genvägar är inte annorlunda än att lära sig hur man gör något annat på din smartphone eller dator. Lägg bara ner lite tid och tålamod så kommer du till slut.

För fler guider, tutorials och nyheter om allt som har med Apple att göra, kolla in resten av AppleToolBox-bloggen.

OK [A-Z][a-z]+, vi ses nästa gång!