Come iniziare a utilizzare Regex con l'app Scorciatoie

Nell'ultimo mese circa, ho trattato le app Scorciatoie e Automator rispettivamente su iOS e macOS. Entrambi sono potenti quando si tratta di automazione nell'ecosistema Apple e, a partire da macOS Monterey questo autunno, Shortcuts sarà l'app di automazione ideale su tutti i dispositivi Apple. Questo è il motivo per cui ho voluto dedicare questo articolo a discutere di un argomento molto potente: l'uso di espressioni regolari con l'app Shortcuts.

Anche se ho un po' di esperienza in informatica e programmazione, in qualche modo non mi ero mai imbattuto in regex. Forse il nome mi ha spaventato, o forse era il codice, che è uno dei codici meno leggibili che abbia mai visto.

In ogni caso, ho deciso di esaminare ulteriormente le espressioni regolari dopo aver coperto l'app Shortcuts negli ultimi mesi. E quello che ho scoperto è che molte delle limitazioni in cui mi ero imbattuto con le scorciatoie, così come con Automator, potevano essere superate con le espressioni regolari.

In altre parole, non era che queste app fossero prive di funzionalità, ma che mi mancasse l'istruzione.

Quindi nel post di oggi, io e te impareremo insieme i dettagli dell'espressione regolare. In questo modo, puoi ottenere il massimo da ciascuna di queste app.

Tratteremo le basi dell'espressione regolare (a partire da ciò che è), cosa puoi fare con esso nell'app Shortcuts, alcuni siti Web e risorse che puoi utilizzare se non hai voglia di imparare l'espressione regolare da solo, quindi approfondiremo i concetti e i meccanismi di base dell'espressione regolare linguaggio.

Bene, iniziamo!

Contenuti

  • Cosa sono le espressioni regolari (es. regex)?
    • Cose che puoi fare con regex
  • Come puoi usare le espressioni regolari con l'app Scorciatoie?
  • Usa regex101.com per testare le tue espressioni regolari
  • Se non vuoi imparare a usare le espressioni regolari con l'app Scorciatoie, leggi questo
  • Regex per principianti: inizia a utilizzare le espressioni regolari con le scorciatoie
    • Cosa sono i sapori regex?
    • Siti web e riferimenti per aiutarti a iniziare a imparare l'espressione regolare con le scorciatoie
    • Come eseguire una ricerca di testo di base utilizzando l'espressione regolare con le scorciatoie
    • Aggiunta di componenti variabili alle tue ricerche regex
    • Gli intervalli possono ampliare la tua ricerca
    • Come escludere parole e caratteri dalle ricerche regex con le scorciatoie
    • I caratteri jolly possono darti più opzioni di ricerca
    • Usa i quantificatori per specificare la lunghezza del testo che stai cercando
    • Ci sono alcuni altri quantificatori che vorrai conoscere
    • Cerca caratteri all'inizio e alla fine di una stringa di testo
    • Archivia stringhe di testo utilizzando la funzione di raggruppamento di regex con scorciatoie
  • Ora cosa?
    • Come lo scomporresti?
  • Inizia a utilizzare l'espressione regolare con le scorciatoie per portare la tua automazione al livello successivo
    • Post correlati:

Cosa sono le espressioni regolari (es. regex)?

Un'espressione regolare, o "regex", è un frammento di codice che puoi utilizzare per cercare una parte di testo all'interno di una parte di testo più grande.

Nel caso non lo sapessi, una parte di testo all'interno di un'altra parte di testo è chiamata "stringa" nella programmazione. Ad esempio, la parola "verde" è una stringa di caratteri del testo "Oggi indossavo pantaloni verdi".

Quindi, in altre parole, l'espressione regolare è un modo per individuare una stringa di testo in un corpo di testo più ampio. E poiché l'espressione regolare è scritta in codice, puoi usarla per eseguire alcune operazioni piuttosto complesse.

Ad esempio, se vuoi cercare la parola "email", puoi facilmente scrivere un codice regex che cerchi email.

Tuttavia, se desideri trovare un'e-mail all'interno di un paragrafo e non sai esattamente quale sia l'e-mail, dovrai cercare una stringa di testo formattata come un'e-mail. cioè una stringa che segue il “[e-mail protetta]" formato.

Ora, supponiamo che tu non voglia solo trovare un'email da un paragrafo ma ogni e-mail. Forse vuoi copiarli rapidamente da qualche altra parte, aggiornarli con un nuovo formato o sostituirli in modo che dicano tutti "[e-mail protetta]“.

Man mano che diventi sempre più abile ed esperto con le espressioni regolari, sarai in grado di fare tutte queste cose e altro ancora.

Cose che puoi fare con regex

Va bene, quindi forse gli esempi con l'e-mail che ho appena fornito non sono così pratici. Non preoccuparti: questo è lontano dal limite di ciò che puoi ottenere utilizzando l'espressione regolare con l'app Shortcuts.

In generale, tutto ciò che può fare l'espressione regolare rientra in una di queste quattro categorie:

  1. Trova una stringa di testo in una parte di testo più grande (ad esempio, cercando una parola/stringa/tipo di stringa su una pagina di testo).
  2. Conferma che una stringa di testo corrisponda al formato desiderato (ad esempio, controllando che una stringa di testo sia maiuscola/ordinata/punteggiata correttamente).
  3. Sostituisci o inserisci del testo in un'area specifica di una parte di testo.
  4. Dividi una stringa di testo in punti specificati (ad esempio, dividi una parte di testo ogni volta che c'è una virgola).

Il livello di profondità che puoi utilizzare per interagire con ciascuno di questi tipi di funzioni e il modo in cui puoi combinarli rendono l'espressione regolare uno strumento incredibilmente potente per l'analisi e la manipolazione del testo.

Come puoi usare le espressioni regolari con l'app Scorciatoie?

Va bene, quindi ora si spera che tu abbia un'idea di base di cosa viene utilizzata l'espressione regolare. È un tipo di codice che puoi usare per cercare del testo, anche se non sai esattamente cosa sia quel testo.

Quindi, in che modo questo ti aiuta nelle scorciatoie? Simile all'aggiunta di script alle scorciatoie, è un modo per passare dalle automazioni di base (Scrivimi quando si apre la porta principale) a opzioni più avanzate (Crea automaticamente un evento del calendario per le mie riunioni ogni volta che ricevo un'e-mail per una riunione Zoom dal lavoro).

Puoi usare l'espressione regolare con le scorciatoie per verificare che un input sia corretto. Ad esempio, se crei un collegamento che funziona solo con gli URL, puoi utilizzare l'espressione regolare all'inizio del collegamento per assicurarti che l'utente esegua l'automazione su un URL.

Puoi combinare le espressioni regolari con gli script per creare potenti scorciatoie. Per esempio, questa scorciatoia utilizza regex e scripting per trasformare un codice a barre in un URL per il tuo negozio preferito.

Quando si utilizza l'app Shortcuts su Mac (in arrivo nell'autunno del 2021), è possibile utilizzare l'espressione regolare per eseguire azioni batch su una parte di testo. Ad esempio, puoi copiare tutte le email in una selezione di testo come un elenco ordinato. In alternativa, puoi sostituire tutti i nomi in un documento con i caratteri "*" per garantire la privacy.

Puoi anche copiare un corpo di testo da un'app, riformattarlo in modo che corrisponda alle preferenze di un'altra app e quindi incollarlo in quell'altra app, il tutto con una singola azione del tasto destro.

In altre parole, l'espressione regolare ti dà il controllo totale sulla gestione del testo con l'app Scorciatoie. All'inizio potrebbe non sembrare molto utile, ma ora che sai che esiste, inizierai sicuramente a notare quante scorciatoie potrebbero essere migliorate da questa funzione. E noterai anche che molte scorciatoie non sono nemmeno possibili senza regex.

Usa regex101.com per testare le tue espressioni regolari

Una volta che inizi a utilizzare l'espressione regolare con le scorciatoie, ti imbatterai in un punto di frustrazione:

È davvero difficile testare il tuo codice regex. E questo non è univoco per regex. Testare qualsiasi cosa con l'app Shortcuts è un po' una seccatura. L'unico modo per farlo è eseguire il collegamento. Questo metodo non è male quando stai solo testando le funzionalità di scorciatoie integrate.

Ma per il codice di test, questo non consente il controllo riga per riga e non offre molti feedback.

Per questo, consiglierei di utilizzare regex101.com. È un sito in cui puoi digitare il codice regex in tempo reale. Puoi anche digitare del testo in un editor di testo sulla stessa pagina web. Durante la digitazione, vedrai se la tua espressione regolare funziona, perché funziona o non funziona e otterrai informazioni sulle corrispondenze trovate.

regex101.com utilizza un diverso tipo di regex rispetto a quello supportato da Shortcuts (ne parleremo più avanti tra un minuto), ma è abbastanza vicino da non doverti imbattere in troppi problemi.

L'utilizzo di questo strumento è fantastico perché puoi prima scrivere la tua regex lì, quindi copiarla nell'app Shortcuts una volta che funziona come previsto.

Se non vuoi imparare a usare le espressioni regolari con l'app Scorciatoie, leggi questo

Ho capito: non tutti vorranno imparare a usare le espressioni regolari con le scorciatoie. È un'abilità e ciò significa che richiederà tempo e pratica. Non è affatto semplice come il resto delle funzionalità di trascinamento della selezione dell'app Scorciatoie.

Nessun problema! Anche se non sarai in grado di ottenere tanto dall'app Shortcut quanto qualcuno che dedica del tempo per imparare l'espressione regolare, ci sono ancora opzioni disponibili per te. Vale a dire, ci sono siti e pagine online in cui le persone hanno creato un elenco di morsi di codice regex che puoi copiare e incollare nell'app Shortcuts.

Ecco alcuni link da controllare se non vuoi imparare l'espressione regolare:

  • 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

Basta leggere quei collegamenti e dovresti essere in grado di trovare soluzioni regex comuni alle scorciatoie che desideri creare. Questa non sarà un'opzione priva di istruzione, poiché ci vorrà ancora un po' per capire cosa stai guardando. Ma è molto più semplice e una soluzione ideale per qualcuno che non ha il tempo di mettere in regex.

Detto questo, devo ammettere che l'espressione regolare non è troppo difficile da imparare, soprattutto se hai esperienza con il codice shell o la programmazione per principianti. All'inizio le espressioni regolari mi sembravano incomprensibili, ma dopo un'ora di lettura degli articoli e di gioco con regex101.com, sono stato in grado di iniziare a scrivere le espressioni regolari per le mie scorciatoie.

È solo una cosa di familiarità: dopo averlo guardato abbastanza a lungo, smetterà di sembrare così strano. Quindi, se hai tempo e sei solo intimidito, non esserlo!

Regex per principianti: inizia a utilizzare le espressioni regolari con le scorciatoie

Va bene, basta prefazione! Dovresti avere un'idea di cos'è l'espressione regolare, cosa può fare, perché dovresti impararla e informazioni sufficienti per decidere se vuoi impararla. Ora entriamo nel merito.

Ci sono molti contenuti qui sotto, ma non preoccuparti! Questo articolo sarà più che altro una guida allo studio. Consiglio di sfogliare ogni sezione in modo da avere un'idea dei meccanismi utilizzati dalle espressioni regolari. Questo dovrebbe anche aiutarti a capirlo, se sei ancora confuso su cosa sia l'espressione regolare.

Una volta che hai scremato le cose, ti consiglio di aprire regex101.com e di giocare con ciascuno degli strumenti in ogni sezione sottostante. Questo ti aiuterà a vedere come appaiono i concetti nella pratica e a migliorare la tua memoria. Dopo averlo fatto, puoi semplicemente considerare questo articolo come un punto di riferimento, qualcosa a cui puoi tornare quando dimentichi i bit e i bob della regex.

Ok andiamo!

Cosa sono i sapori regex?

Per prima cosa, esamineremo i sapori delle espressioni regolari. Non preoccuparti: questo non influirà sull'utilizzo quotidiano delle espressioni regolari con le scorciatoie. È solo qualcosa di cui essere consapevoli prima di iniziare.

Esistono diverse versioni di regex note come "sapori". Queste diverse versioni sono ancora molto simili. Se puoi imparare a leggere e scrivere un sapore, dovresti essere in grado di leggerne uno qualsiasi. Ci saranno solo lievi differenze nel modo in cui il tuo codice regex dovrebbe essere formattato.

Nella programmazione, queste specifiche di formattazione sono note come "sintassi". È solo il modo in cui devi scrivere il tuo codice affinché quel codice venga compreso dall'app in cui lo stai scrivendo.

Ecco perché la sintassi è importante

"Ehi amico, come sta andando la tua giornata?"

“, sta andando amico? il tuo Hey giorno come”

Entrambe le frasi hanno le stesse parole, caratteri e spazi. Solo uno ha senso, però, ed è perché segue la sintassi convenzionale.

Nella codifica, un linguaggio di programmazione potrebbe comprendere la prima versione ma non la seconda. Per un altro linguaggio di programmazione, tuttavia, il secondo potrebbe avere un senso totale mentre il primo sembra incomprensibile. Tuttavia, per qualcuno che sa parlare inglese, probabilmente puoi capire l'intenzione di entrambe le righe, anche se ci vorrà un po' di lavoro per capirne il significato.

Questo è (più o meno) come sono i diversi gusti di regex. Sembreranno tutti un po' diversi e un po' simili a te. Ma devi usare il sapore giusto per l'app che stai utilizzando, altrimenti quell'app non avrà idea di cosa hai scritto.

L'app Shortcuts comprende il sapore ICU di regex, quindi questo è il sapore che vorrai usare. Il sito regex101.com ha alcuni gusti diversi tra cui puoi scegliere a sinistra della pagina. Tuttavia, utilizza PCRE, che è abbastanza simile a ICU.

È importante sapere che esistono diversi tipi di espressioni regolari perché senza dubbio ti imbatterai in diversi gusti online. Se trovi un po' di regex che vuoi rubare ma non riesci a farlo funzionare con le scorciatoie, o semplicemente non sembra giusto, controlla in che tipo è scritto!

Siti web e riferimenti per aiutarti a iniziare a imparare l'espressione regolare con le scorciatoie

Un'altra cosa di cui voglio parlare prima di iniziare a esplorare i meccanismi reali della scrittura delle espressioni regolari sono le risorse. Non sto affatto affermando che questo post sia una risorsa esauriente sull'apprendimento delle espressioni regolari. È pensato solo per essere un utile punto di partenza per coloro che desiderano utilizzare l'espressione regolare con le scorciatoie.

Se vuoi approfondire l'espressione regolare o ritieni che questo articolo non ti dia l'aiuto di cui hai bisogno, puoi consultare alcuni di questi articoli, guide e strumenti:

  • https://regex101.com – Un sito Web che ti consente di testare il tuo codice regex in tempo reale.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Un cheat sheet per quando dimentichi cosa fa ogni personaggio
  • http://www.rexegg.com – Questo sito Web è una risorsa completa per apprendere tutto ciò che è necessario sapere sull'espressione regolare. Dai un'occhiata a questo se vuoi diventare esperto con le espressioni regolari.
  • https://scottwillsey.com/blog/ios/regex1/ – Questa è una serie di blog in quattro parti sull'uso delle espressioni regolari con le scorciatoie. Sto adottando un approccio molto diverso da questa guida, quindi dovrebbe costituire una bella serie di accompagnamento per questo articolo.
  • Stack Overflow e Reddit sono entrambi ottimi siti Web per condividere le tue domande sulle espressioni regolari e i progressi per ottenere consigli e risposte.

Queste risorse sono distinte da quelle elencate nel Se non vuoi imparare a usare le espressioni regolari con l'app Scorciatoie in quanto richiederanno tutti di iniziare effettivamente a imparare l'espressione regolare. Sono più completi, mentre gli altri sono solo punti di riferimento.

Come eseguire una ricerca di testo di base utilizzando l'espressione regolare con le scorciatoie

Bene! Ora siamo arrivati ​​al punto che tutti stavano aspettando: impareremo i fondamenti dell'uso delle espressioni regolari con le scorciatoie.

Iniziamo con una ricerca di base, poiché questa è la cosa più semplice che puoi fare con le espressioni regolari. Come accennato in precedenza, consiglio di aprire regex101.com in un'altra scheda in modo da poter seguire.

Nella sua forma più elementare, regex cercherà (o incontro) qualunque cosa digiti al suo interno. Ad esempio, se dovessi digitare Bene come il mio codice regex, troverebbe ogni istanza della parola "Va bene" in questa guida.

Le maiuscole, la spaziatura e la punteggiatura contano. Ciò significa che Bene, Bene, Bene!, e Bene , produrranno tutti risultati diversi.

E questo è tutto! Ogni volta che digiti qualcosa in una ricerca regex senza utilizzare caratteri speciali, regex corrisponderà a qualsiasi cosa che corrisponda esattamente a ciò che hai digitato.

C'è un problema! Alcuni caratteri sulla tastiera sono anche caratteri regex speciali. Ciò significa che svolgono una sorta di funzione nel codice regex.

Il ? il simbolo è uno di questi caratteri. È usato nel codice regex come quantificatore. Quindi, se provi a cercare "Va bene?" digitando Bene? come codice regex, non otterrai ciò che desideri.

Per risolvere questo problema, devi specificare che vuoi usare "?" come stringa, non come carattere speciale. Per farlo per questo personaggio o per qualsiasi altro, aggiungi semplicemente a \ simbolo subito prima del carattere di cui si desidera annullare le proprietà speciali.

Quindi, se vuoi cercare "Va bene?" con regex, il tuo codice sarà simile a questo:

Bene\?

Se non sei sicuro che un carattere specifico sia trattato come un carattere speciale dall'espressione regolare, puoi controllare questo cheat sheet per tutti i caratteri speciali in regex.

Cerca più di una parola usando il carattere "o"

Un altro componente importante della ricerca di stringhe con regex è l'utilizzo della funzione "or". Questo è un carattere che puoi inserire tra due parole/caratteri per dire "Abbina questo o questo".

Ad esempio, se voglio cercare in un corpo di testo la parola "va bene" e "va bene", userei il | carattere. Così:

Va bene|va bene

Se hai difficoltà a trovare il | carattere, tieni premuto il spostare premere il tasto e premere il tasto \ chiave. È sopra il Restituzione tasto sulla maggior parte delle tastiere.

Aggiunta di componenti variabili alle tue ricerche regex

Ok, quindi ora che sai com'è l'espressione regolare neutra, è ora di prendere il tuo primo carattere speciale. Sarebbero le parentesi quadre, che sono queste cose [].

Qualunque cosa tu metta all'interno di queste parentesi sarà considerata una componente variabile della tua ricerca regex. Puoi inserire quanti caratteri vuoi tra parentesi, anche se solo uno sarà valido per corrispondenza.

Va bene, sembra un po' complicato, ma non lo è! Ecco come appare in pratica:

  • [Bene corrisponderà solo alla parola "Va bene". Un po' inutile.
  • [AB] bene corrisponderà sia a "Va bene" che a "Luminoso".
  • Alr[iouxyz]ght corrisponderà a "Va bene", "Va bene", "Va bene", "Alrxght" e così via.

Puoi combinare i caratteri tra parentesi e utilizzare più parentesi nella stessa riga di regex. [AB]r[i1]gh[tuvwxyz] è un pezzo valido di regex. Si spera, tuttavia, che non sembri così caotico come potrebbe essere pochi minuti fa!

Gli intervalli possono ampliare la tua ricerca

Il prossimo bit di regex che sarà utile con le scorciatoie è l'intervallo. Gli intervalli ti consentono di specificare un intervallo di caratteri che accetterai.

Nella sezione precedente, potresti aver notato che le mie parentesi includevano molte lettere consecutive. Il più lungo è stato [tuvwxyz]. Quelle lettere appaiono nell'alfabeto nello stesso ordine, proprio una accanto all'altra.

Ciò significa che potrei usare un intervallo invece di digitarli. Sarebbe simile a questo:

Va bene[t-z]

Questo pezzo di codice regex farà la stessa cosa di Va bene[tuvwxyz]. È solo più ordinato e più facile da scrivere.

Potresti sostituire la stessa gamma con [a-z] se vuoi che accetti qualsiasi lettera minuscola dell'alfabeto. Oppure potresti usare [0-9] se si desidera accettare qualsiasi numero a una cifra.

È inoltre possibile combinare intervalli all'interno della stessa parentesi. Per esempio, questo Alr[i-ux-z]ght accetterà "Alright", "Alroght", "Alrxght" e "Alryght", ma non accetterà "Alraght" o "Alrvght".

Ci sono altre varianti della parola "Va bene" che questo codice accetterà, tra l'altro, e molte altre che non accetteranno. Questa è solo una breve selezione per mantenere le cose, beh, brevi.

Se hai difficoltà a capire cosa [i-ux-z] significa che potrebbe essere utile vederlo scritto in questo modo:

[i-u, x-z]

Questa non è la sintassi corretta dell'espressione regolare: non dovresti usare una virgola per separare gli intervalli. Ma si spera che questo aiuti ad avere più senso!

Non hai bisogno di virgole in regex per separare gli intervalli e non devi mettere gli intervalli uno accanto all'altro. Potresti cambiarlo in [i-uabcx-z]. Ciò accetterebbe gli stessi intervalli di prima più i caratteri "a", "b" e "c".

Come escludere parole e caratteri dalle ricerche regex con le scorciatoie

Ok, ora stiamo arrivando da qualche parte! Se hai seguito questo articolo fino a questo punto, dovresti essere in grado di guardare il codice qui sotto e capire a cosa corrisponde:

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

Se riesci a leggerlo, allora sai che quel pezzo di codice regex include Un sacco di possibili variazioni della parola “AppleToolBox”. E se volessimo ridurre il numero di variazioni che accetta senza alterare la nostra gamma?

È qui che entra in gioco il carattere "non". Sembra così: ^. Se hai difficoltà a trovarlo sulla tastiera (come ho fatto io), tieni premuto spostare e premere il 6 tasto sulla tastiera.

Per usare il ^ carattere, posizionalo all'inizio del carattere che desideri escludere.

C'è un problema! Il ^ il carattere non funziona al di fuori di una funzione regex. Non puoi semplicemente metterlo davanti alla lettera "A" per escludere quella lettera dalla tua ricerca. Il codice regex ^A cercherà solo una "A" maiuscola.

Invece, combinalo con parentesi e altri caratteri speciali regex.

Ad esempio, se volessi cercare qualsiasi istanza della parola "Va bene" che non inizi con la lettera "A", userei il codice [^Bene.

Puoi persino combinarlo con le gamme! Basta metterlo all'inizio della parentesi e tutto ciò che è all'interno di quella parentesi, intervalli inclusi, sarà escluso dalla ricerca. Così:

E se volessi escludere una parola specifica dalla tua ricerca?

Ho avuto difficoltà a trovare queste informazioni. Tuttavia, un utente di Stack Overflow ha avuto la soluzione e sembra così:

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

Basta sostituire parola con qualunque parola tu voglia escludere dalla tua ricerca. Così:

Puoi leggere quel post di Stack Overflow qui se vuoi saperne di più su questo caso d'uso specifico.

I caratteri jolly possono darti più opzioni di ricerca

Questo ci porta ai caratteri jolly. Il carattere jolly, che è un punto ., viene utilizzato per rappresentare qualsiasi singolo carattere, nessuno escluso. Se scrivi . come codice regex con scorciatoie, restituirà ogni singolo carattere in un corpo di testo come corrispondenza individuale.

Non consiglierei di usarlo per quello scopo, ovviamente! Invece, consiglio di usarlo al posto di un singolo carattere in una parola. Per esempio, Va bene corrisponderà a "Va bene", "Alrxght", "Alr

E questo è praticamente tutto! Il carattere jolly è abbastanza facile da capire. Corrisponde a tutto! Ciò lo rende utile per trovare stringhe che corrispondono a un formato specifico pur avendo caratteri univoci.

Le e-mail, ad esempio, sembreranno tutte abbastanza simili senza essere uguali. Il carattere jolly può aiutarti a combinare elementi che sai saranno presenti (come ".com" e "@") con caratteri che non conosci (come "mia_email567", iCloud o "Gmail").

Un altro caso d'uso interessante è l'uso di . carattere per trovare stringhe di una lunghezza specifica.

Ad esempio, se voglio trovare ogni stringa di quattro caratteri in un corpo di testo, potrei usare ... con uno spazio su entrambi i lati.

E qui ci sono tutte le stringhe di sette caratteri nello stesso corpo di testo:

Nota che questo non è un metodo perfetto per trovare stringhe di una certa lunghezza. Come puoi vedere negli esempi sopra, alcune stringhe sono abbinate che non dovrebbero essere e alcune che dovrebbero essere ignorate. È solo interessante ricordare che puoi usare il . carattere per contare i caratteri.

Inoltre, tieni presente che il . è un carattere speciale in regex. Ciò significa che dovrai aggiungere a \ davanti se vuoi cercare i periodi. Ciò significa che dovresti usare Bene\. in modo che corrisponda a "Va bene".

Usa i quantificatori per specificare la lunghezza del testo che stai cercando

Va bene, quindi tecnicamente puoi usare il . carattere per trovare una stringa che occupa un numero specifico di caratteri. La maggior parte delle volte, però, vorrai essere più specifico.

È qui che entrano in gioco i quantificatori. I quantificatori ti consentono di specificare la lunghezza della stringa che stai cercando quando usi l'espressione regolare con le scorciatoie.

Ad esempio, supponiamo che tu voglia trovare una parola che sia lunga specificamente tre lettere. Per specificarlo, ti consigliamo di utilizzare queste parentesi:

{}

Quando metti queste parentesi dopo queste [] parentesi, stai specificando che vuoi una stringa che corrisponda al numero di caratteri all'interno di questo {} e l'intervallo di caratteri specificato in questo [].

Sono sicuro che non ha molto senso ora, quindi diamo un'occhiata a un esempio!

Supponi di voler trovare gli anni menzionati in un corpo di testo. Poiché un anno è composto da quattro numeri (ovviamente non tutti gli anni da sempre, seguimi qui), puoi usare questo codice per abbinare gli anni all'interno di quel testo:

[0-9]{4}

Questo codice dice che vogliamo una stringa composta da caratteri da 0 a 9 che sia lunga specificamente quattro caratteri. Puoi vedere come individua questa stringa specifica nello screenshot seguente:

Dovrei notare che ci sono alcuni problemi con questo codice regex, ed è che non tiene conto di spazi o punteggiatura. Quindi, se il codice trova un numero lungo più di quattro caratteri, come "12345678", troverà la stringa "1234" e la stringa "5678".

Per risolvere questo problema, dovresti aggiungere uno spazio all'inizio del codice e una parentesi dopo il {4} che contiene un altro spazio, un punto, un punto interrogativo, una virgola e un punto esclamativo. In questo modo, trascurerà lunghe stringhe di numeri senza perdere le stringhe di numeri che hanno la punteggiatura alla fine anziché uno spazio.

Potresti anche voler usare i quantificatori per specificare più di una lunghezza di stringa. Ad esempio, forse voglio trovare una stringa lunga quattro caratteri, ma anche sette e undici. Ecco come sarebbe:

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

Ci sono alcuni altri quantificatori che vorrai conoscere

Ok, quindi ci sono ancora più quantificatori! Questi ultimi quantificatori servono quando vuoi specificare la lunghezza di una stringa senza essere troppo specifico.

Ad esempio, supponiamo di voler trovare una stringa di qualsiasi lunghezza a cui l'espressione regolare può corrispondere. Come un nome! I nomi (nei paesi occidentali) iniziano con una lettera maiuscola e terminano con una quantità casuale di lettere minuscole, seguite da uno spazio. Per trovare un nome, dovresti scrivere il seguente codice:

[A-Z][a-z]*

[A-Z] specifica che il primo carattere della stringa deve essere una lettera maiuscola. [a-z]* specifica che il resto della stringa deve essere composto da lettere minuscole, ma non importa quante lettere seguono. E lo spazio alla fine significa che terminerà la partita una volta trovato uno spazio alla fine delle lettere minuscole.

Una combinazione d'oro in regex è .*. Ciò significa abbinare qualsiasi carattere all'infinito. In altre parole, abbinerà l'intero corpo del testo come un unico elemento.

Il prossimo quantificatore che devi sapere è +. Questo è proprio come * tranne per il fatto che non corrisponderà a una stringa con zero caratteri. * corrisponderà a qualsiasi lunghezza di stringa, che include stringhe che non hanno lunghezza. +, d'altra parte, necessita di una stringa con almeno un carattere o più.

Infine, c'è il ? quantificatore. Questo è bizzarro. Specifica che una stringa è lunga zero caratteri o lunga un carattere. Questo è tutto: o niente o solo uno. Quindi se usi il codice [a-z]? con uno spazio all'inizio e alla fine, cercherà singole lettere all'interno di un corpo di testo.

Cerca caratteri all'inizio e alla fine di una stringa di testo

Ci stiamo avvicinando alla fine della nostra guida sull'uso delle espressioni regolari con le scorciatoie! Ci sono solo altri due tipi di codice regex che utilizzerai con le scorciatoie.

I primi sono caratteri che ti consentono di abbinare le stringhe in base a come iniziano e/o finiscono.

Quando non è tra parentesi, il ^ il ruolo del personaggio cambia dal significato di "escludere" a "inizia con". Specifica che una stringa dovrebbe iniziare con quello che vuoi. Ad esempio, se scrivi ^A, che corrisponderebbe alla lettera "A" nelle stringhe "Va bene", "Apple" e "A".

Tuttavia, non corrisponde all'intera parola. Per questo, dovresti cambiarlo in ^A[A-Za-z]*. Ciò corrisponderà alla prima parola di un paragrafo/stringa, a condizione che quella parola inizi con una "A" maiuscola.

Come nota a margine, puoi scrivere [A-Za-z] come [A-z]. Significa la stessa cosa, trovo solo che il primo è un po' più chiaro quando stai imparando.

Per specificare la fine della stringa, ti consigliamo di utilizzare il $ carattere. Funziona come il ^ carattere. L'unica differenza è che lo scrivi alla fine di una parentesi/stringa anziché all'inizio.

Ad esempio, se volessi trovare stringhe/paragrafi che terminano con "le", useresti il ​​codice [A-z]*le$. Ciò corrisponderà a "Table", "apple" e "capable" purché si trovino alla fine di una stringa o di un paragrafo.

Regex rifiuterà anche questa corrispondenza se è presente uno spazio o un segno di punteggiatura alla fine della stringa. "Tavolo." non verrà abbinato a questo codice.

Per risolvere questo problema, puoi prendere in considerazione la punteggiatura. Questo codice tiene conto di varie forme di punteggiatura e spaziatura che potrebbero verificarsi alla fine di una stringa, incluso un segno di punteggiatura seguito da uno spazio:

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

Quel codice corrisponderà a "Able", "table.", "stable" e "capable? “.

Archivia stringhe di testo utilizzando la funzione di raggruppamento di regex con scorciatoie

Bene! Sei arrivato alla fine della nostra guida AppleToolBox sull'uso delle espressioni regolari con le scorciatoie. C'è solo un'altra funzione regex rimasta da imparare, e questo è il raggruppamento.

Il raggruppamento è probabilmente la caratteristica più importante dell'espressione regolare in quanto è ciò che ti consente di fare cose con il codice dell'espressione regolare che scrivi. Senza di essa, l'espressione regolare è solo una funzione di ricerca. Può solo dirti se una stringa esiste all'interno di un corpo di testo più ampio, ovvero restituirà "vero" o "falso".

Con il raggruppamento, tuttavia, puoi memorizzare i risultati del tuo codice regex. E ciò significa che puoi copiare le corrispondenze, memorizzarle in variabili, sostituirle con altro testo, modificare la loro formattazione e tutto il resto che vorresti fare con l'espressione regolare.

Fortunatamente, il raggruppamento è semplicissimo! Metti quello che vuoi raggruppare tra parentesi (). Qualunque cosa tu metta tra parentesi sarà trattata come un gruppo.

Se metti un'intera riga di codice regex tra parentesi, come (.*@.*\..{3}), allora quel gruppo verrà ricordato dal tuo codice, che consentirà di richiamarlo in seguito.

È importante utilizzare i gruppi solo quando è necessario. Poiché sono archiviati in memoria, possono ridurre le prestazioni del codice. Salva i gruppi per quando sono necessari!

Puoi usare i gruppi anche per l'organizzazione

Puoi anche utilizzare i gruppi per organizzare il tuo codice regex con le scorciatoie. Quando lo fai, il gruppo all'interno delle parentesi non verrà necessariamente ricordato.

Ad esempio, diciamo che voglio abbinare la parola "Ciao", tranne per il fatto che non mi interessa quale sia l'ultima lettera. Può essere qualsiasi lettera minuscola o maiuscola o anche un numero. "Hell3838djdjajaksks" e "Hello" dovrebbero essere contati come corrispondenze. "L'inferno", d'altra parte, non dovrebbe essere contato.

Per farlo funzionare, scrivo il codice Inferno[A-z]|[0-9]+. Ma questo è il risultato che ottengo:

Il motivo per cui non corrisponde al modo in cui mi aspettavo è che il + viene applicato solo al [0-9] staffa. Ho bisogno che si applichi a entrambe le parentesi.

Inoltre, questo codice dice che voglio entrambi Inferno[A-z]o[0-9]. Quindi corrisponde a parole che iniziano con "Inferno" e finiscono con una lettera, o cerca stringhe di numeri. Ciò di cui ho effettivamente bisogno è che corrisponda alle istanze della parola "Inferno" che terminano con una lettera o un numero.

Per risolvere questo problema, posso usare un gruppo e riscrivere il codice come Inferno([A-z]|[0-9])+. Ora sta cercando la parola "Inferno" seguita da qualsiasi lettera o numero. E poiché il + si applica a entrambe le parentesi, può essere qualsiasi combinazione di lettere e numeri, purché sia ​​presente almeno una lettera o un numero.

Come puoi vedere nello screenshot qui sotto, questo gruppo risolve il mio problema senza necessariamente memorizzare le informazioni all'interno di quel gruppo:

Ora cosa?

E questo è tutto! Questo è quasi tutto ciò che potresti voler sapere sull'uso delle espressioni regolari con le scorciatoie. Si spera che tu ti senta abbastanza sicuro da iniziare a sperimentare con l'espressione regolare ora, anche se all'inizio non aveva senso per te.

Ora che conosci le basi dell'espressione regolare, sei pronto per iniziare a usarlo nelle tue scorciatoie! Le scorciatoie accettano l'input regex nelle seguenti azioni:

  • Corrispondenza testo
  • Sostituisci testo

Usando queste due azioni scorciatoie, puoi inserire espressioni regolari nelle tue scorciatoie.

Abbinalo alle capacità di automazione di Scorciatoie e avrai uno strumento piuttosto potente a tua disposizione.

Puoi utilizzare l'espressione regolare per semplificare la formattazione del testo nelle scorciatoie, per estrarre informazioni da e-mail, testi, siti web, file ed eventi del calendario, creare testo che segue un formato specificato, verificare che l'input sia stato inserito correttamente e di più.

Ad esempio, supponiamo che tu voglia abbinare le email. Forse devi controllare che una stringa di testo sia un'e-mail, o forse vuoi estrarre una o più e-mail da un corpo di testo.

Come lo scomporresti?

Bene, sai che la struttura di base di un'e-mail sarà una combinazione di lettere, numeri e caratteri, seguita dal simbolo "@", quindi seguito dal nome di un sito Web come Gmail o iCloud, seguito poi da ".com", ".org" o qualche altro tipo di primo livello a tre caratteri dominio.

Per scriverlo in regex, devi specificare che vuoi una stringa di almeno un carattere che sia immediatamente seguita dal simbolo "@", quindi un'altra stringa di almeno un carattere, seguita da un ".", quindi seguita da una stringa di tre caratteri. Sarebbe simile a questo:

[e-mail protetta]+\..{3}

Se lo incolli nel Corrispondenza testo o Sostituisci testo azioni in Scorciatoie, avrai un'automazione in grado di trovare, archiviare e manipolare un indirizzo email.

Puoi usare questo tipo di risoluzione dei problemi per trovare le tue soluzioni regex o per trovarne alcune che altri hanno creato online!

Inizia a utilizzare l'espressione regolare con le scorciatoie per portare la tua automazione al livello successivo

E questo, amici, è davvero così. Spero che ti sia piaciuto seguire questo articolo! Questo è uno dei pezzi più ambiziosi che abbia mai scritto per AppleToolBox. Ho dovuto imparare da solo la regex per scriverlo e spero di essere stato in grado di aiutarti a impararlo.

Usare l'espressione regolare con le scorciatoie non è diverso dall'imparare a fare qualsiasi altra cosa sul tuo smartphone o computer. Mettici un po' di tempo e pazienza e alla fine ci arriverai.

Per ulteriori guide, tutorial e notizie su tutto ciò che riguarda Apple, dai un'occhiata al resto di il blog di AppleToolBox.

Bene [A-Z][a-z]+, ci vediamo la prossima volta!