Come usare Regex in PowerShell

Come usare Regex in PowerShell
Espressione regolares o Regex può essere complicato che i principianti possano capire ma è una tecnica molto efficace per interagire con le corde. Il linguaggio regex è un potente scorciatoia di descrizione del modello e viene utilizzato per analizzare e abbinare il testo. PowerShell usa espressioni regolari in vari modi. Poiché i comandi PowerShell o i cmdlet sono così strettamente integrati, è facile dimenticare di usare Regex. Forse, non sai che alcuni di questi comandi stanno già usando Regex.

PowerShell può funzionare con flussi di oggetti piuttosto che solo testo. Tuttavia, è relativamente capace di elaborazione del testo. Se fai qualche lavoro relativo all'elaborazione del testo, saprai che il regex è uno dei concetti più importanti in qualsiasi linguaggio di programmazione. In questo articolo, ti mostrerai come Per usare Regex in PowerShell. Quindi, iniziamo!

Cosa è Regex in PowerShell?

Un regex è una sequenza particolare di caratteri che utilizza una sintassi speciale per aiutarti a trovare o abbinare stringhe o una serie di stringhe. Regex è in grado di cercare, modificare e manipolare dati e testo. Questa espressione indica al motore di abbinare il testo fornito.

Ora guarderemo il metodo di Usando Regex in PowerShell.

Regex con i letterali dei personaggi in PowerShell

Prima di tutto, eseguiremo un'espressione regolare usando il "-incontro"Operatore. Questo operatore prende un'espressione regolare per scopi e ritorni di corrispondenza dei pattern "$ vero"Se il modello corrisponde.

Ora eseguiremo il nostro primo regex, in cui controlleremo se il "libro"Corrisponde al modello"OK":

> 'libro' -match 'ok'

Questa espressione tornerà vero perché il libro contiene la stringa "OK"("Libro]").

Regex with Character Group in PowerShell

Successivamente, useremo il [Gruppo di personaggi] per abbinare più caratteri contemporaneamente. Nell'esempio seguente, un regex "B [iog]"È utilizzato per abbinare"grande". L'esecuzione di questo regex controllerà se i caratteri tra "B" E "G"In" Big "Match con il gruppo di personaggi"[Iou]"Presente nel"b [iou] g"Regex:

> 'big' -match 'b [iou] g'

Nella prossima dichiarazione, abbiamo aggiunto "libro,"Che non corrisponde al regex specificato. Eseguilo e vediamo quale risultato questa affermazione mostrerà:

> 'libro' -match 'b [iou] g'

Questa espressione tornerà "falso" COME "libro"Non corrisponde al regex"b [iou] g".

Regex con vari schemi in PowerShell

Uno schema può essere una raccolta di personaggi. I caratteri possono essere numerici [0-9], o basato su ASCII [ -~], o alfabetico [A-Z].

> 42 -match '[0-9] [0-9]'

Questa espressione restituirà vero quando il modello corrisponde a qualsiasi numero di due cifre "42", nel nostro caso.

Qualsiasi cifra decimale corrisponderà al "\D"Classe di personaggi. D'altra parte, "\D"Corrisponderà a qualsiasi cifra non decimale.

> "Server-01" -match "server- \ d \ d '

L'espressione sopra data restituirà true se corrisponde a un nome server tra (Server-01-Server-99).

Qualsiasi personaggio della parola "[A-Z A-Z 0-9]"Sarà abbinato da"\ w"Classe di personaggi. Utilizzare "\ W"Per abbinare qualsiasi personaggio non di parola.

> 'Libro' -match '\ w'

L'esecuzione dell'espressione sopra donata restituirà vera come modello "Libro"Abbina il personaggio di prima parola"B'.

In Regex, il periodo "(.)"È considerato un personaggio jolly. Tranne una nuova riga, corrisponderà a qualsiasi personaggio "(\N)". L'espressione di seguito è ritornerà vera perché il modello "[A1 \]"Abbina quattro caratteri.

> 'A1 \' -match '…'

IL "\S"La classe di caratteri viene utilizzata per abbinare lo spazio bianco. Mentre, "\S"O può essere utilizzato per abbinare i caratteri non bianchi.

> ' -' -match '\ s-'

L'esecuzione dell'espressione sopra donessa tornerà "VERO"Come il modello"[ -]"Utilizzato entrambi i metodi per abbinare lo spazio.

Regex con quantificatori in PowerShell

I quantificatori gestiscono il numero di volte in cui ogni elemento dovrebbe apparire nella stringa di input. Alcuni quantificatori disponibili in PowerShell sono i seguenti:

  • [*] viene utilizzato per specificare il verificarsi di qualsiasi elemento come "zero o più volte."
  • [+] viene utilizzato per specificare il verificarsi di qualsiasi elemento come "Una o più volte."
  • [?" viene utilizzato per specificare il verificarsi di qualsiasi elemento come "uno o zero volte."
  • [N] viene utilizzato per specificare il verificarsi di qualsiasi elemento esattamente come "N volte."
  • n, m viene utilizzato per specificare il verificarsi di qualsiasi elemento come "almeno n volte, ma non più di m."

Il comando seguente restituirà vero per qualsiasi nome del server, anche i nomi del server senza trattini.

> 'Server01' -match '[a -z]+-?\ d \ d '

Ora, proveremo ad abbinare un numero di telefono con il regex "\ d 3-\ d 3-\ d 4".

> '111-222-3333' -match '\ d 3-\ d 3-\ d 4'

L'espressione tornerà "VERO"Se scopre un numero di telefono corretto in base allo schema specificato.

Nella parte successiva, useremo Regex negli script di PowerShell. Per questo, in primo luogo, apri il tuo Windows Powershell ISE, e crea un nuovo file:

Scrivi il codice di seguito per la corrispondenza numerica e delle stringhe. In questa sceneggiatura, abbiamo memorizzato uno schema in "$ messaggio"Variabile. Nella seconda riga, questo "$ messaggio"La variabile corrisponderà al suo valore al"errore"Regex usando il"-incontro"Operatore. Abbiamo anche aggiunto una riga di codice per la corrispondenza dei pattern numerici:

$ message = 'c'è un errore con il tuo file'
$ Message -match 'Errore'
'123-45-6789' -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'

Salva questo file come "testfile1.PS1"PowerShell Script ed eseguilo premendo il"Correre"Pulsante.

Entrambi i modelli sono abbinati al regex specificato in modo che questa espressione restituisca "VERO"Per ogni caso.

Puoi anche abbinare un regex a un array. Per dimostrarlo, abbiamo dichiarato un array "$ dati"Nella nostra sceneggiatura. Questo array contiene alcuni valori numerici e stringa. Dopo aver aggiunto valori all'array, lo abbineremo a un regex: "\ d \ d \ d- \ d \ d- \ d \ d \ d \ d". Questa affermazione verificherà se l'array ha dei valori numerici con il modello specificato nell'espressione regolare e stamparla sul tuo terminale PowerShell.

$ data = @(
"Questo è del testo generale"
"Il numero di telefono è 333-99-2222"
"Un'altra dichiarazione di testo"
"Numero di telefono 444-44-4444"
)
$ data -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'


L'operatore di sostituzione utilizza Regex per la corrispondenza del pattern. Questo operatore cerca uno schema e quindi lo sostituisce con l'altro modello specificato nel comando. Ad esempio, nella sceneggiatura di seguito, abbiamo il "$ messaggio"Variabile contenente un valore di stringa"Ciao, mi chiamo Sharqa ". Vogliamo sostituire "Sharqa" con "Sharqa Hameed". Con il "-sostituire"Operatore, scriveremo il modello che vogliamo sostituire in primo luogo e, successivamente, aggiungeremo il modello che vogliamo essere sostituiti.

$ message = "Ciao, mi chiamo Sharqa"
$ Message -Replace 'Sharqa', 'Sharqa Hameed'

Salva questo "testfile1.PS1"PowerShell Script. L'esecuzione di questo script emetterà il valore di "$ messaggio"Variabile con la stringa sostituita"Sharqa" con "Sharqa Hameed".

Conclusione

Esistono numerosi concetti di programmazione in cui è possibile utilizzare Regex o dove potresti già usare Regex senza renderlo conto. Powershell fa un ottimo lavoro nell'incorporare le caratteristiche di regex nella sua lingua.

Con le conoscenze acquisite da questo articolo, dovresti essere in grado di utilizzare Regex in PowerShell per abbinare i modelli numerici o di testo mentre cerchi frasi altamente complesse o specifiche. Ti abbiamo anche mostrato come utilizzare il quantificatore di regex negli script di PowerShell.