Cómo usar Regex en PowerShell

Cómo usar Regex en PowerShell
Expresión regulars o regular puede ser complicado para principiantes de entender, pero es una técnica muy efectiva para interactuar con las cuerdas. El lenguaje regex es un poderoso atajo de descripción del patrón y se usa para analizar y hacer coincidir el texto. PowerShell utiliza expresiones regulares en una variedad de formas. Debido a que los comandos o cmdlets de PowerShell están tan estrechamente integrados, es fácil olvidar usar Regex. Tal vez, no sabes que algunos de estos comandos ya están usando regex.

PowerShell puede funcionar con corrientes de objetos en lugar de solo texto. Sin embargo, es relativamente capaz de procesar texto. Si realiza algún trabajo relacionado con el procesamiento de texto, sabrá que la regex es uno de los conceptos más importantes en cualquier lenguaje de programación. En este artículo, te mostrarás cómo para usar regex en PowerShell. Vamos a empezar!

¿Qué es Regex en PowerShell??

Una regex es una secuencia particular de caracteres que utiliza una sintaxis especial para ayudarlo a encontrar o coincidir con cadenas o un conjunto de cuerdas. Regex es capaz de buscar, editar y manipular datos y texto. Esta expresión instruye al motor que coincida con el texto proporcionado.

Ahora, veremos el método de Usar regex en PowerShell.

Regex con literales de caracteres en PowerShell

En primer lugar, ejecutaremos una expresión regular utilizando el "-fósforo"Operador. Este operador toma una expresión regular para fines de coincidencia de patrones y devuelve "$ verdadero"Si el patrón coincide.

Ahora, ejecutaremos nuestro primer regex, en el que verificaremos si el "libro"Coincide con el patrón"OK":

> 'Libro' -Match 'Ok'

Esta expresión devolverá verdadera porque el libro contiene la cadena "OK"("Libro]").

Regex con grupo de personajes en PowerShell

A continuación, usaremos el [Grupo de personajes] para que coincidan con varios personajes a la vez. En el ejemplo dado a continuación, un regex "B [IOG]"Se utiliza para que coincida con"grande". La ejecución de este regex verificará si los personajes entre "b" y "gramo"En el partido" Big "con el grupo de personajes"[iou]"Presente en el"b [iou] g"Regex:

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

En la siguiente declaración, hemos agregado "libro,"Que no coincide con la regex especificada. Ejecutarlo y veamos qué resultado va a mostrar esta declaración:

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

Esta expresión regresará "FALSO" como "libro"No coincide con el regex"b [iou] g".

Regex con varios patrones en PowerShell

Un patrón puede ser una colección de personajes. Los personajes pueden ser numéricos [0-9], o ascii basado en [ -~], o alfabético [ARIZONA].

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

Esta expresión devolverá verdadera a medida que el patrón coincida con cualquier número de dos dígitos "42", en nuestro caso.

Cualquier dígito decimal coincidirá con el "\d"Clase de personaje. Por otro lado, "\D"Coincidirá con cualquier dígito no decimal.

> 'Servidor-01' -match 'Server- \ d \ d'

La expresión dada anterior devolverá verdadero si coincide con un nombre de servidor entre (Server-01-Server-99).

Cualquier carácter de palabra "[A-Z A-Z 0-9]"Será emparejado por el"\ W"Clase de personaje. Utilizar "\ W"Para hacer coincidir con cualquier personaje que no sea palabras.

> 'Libro' -Match '\ W'

La ejecución de la expresión dada anteriormente devolverá verdadera como el patrón "Libro"Coincide con el personaje de primera palabra 'B'.

En regex, el período "(.)"Se considera un personaje comodín. Excepto por una nueva línea, coincidirá con cualquier personaje "(\norte)". La expresión dada a continuación le devolverá verdadero porque el patrón "[A1 \]”Haga coincidir cuatro personajes.

> 'a1 \' -match '...'

El "\s"La clase de caracteres se usa para que coincida con espacios en blanco. Mientras que, "\S"O se puede utilizar para los personajes que no coinciden.

> ' -' -match '\ s-'

La ejecución de la expresión dada anteriormente volverá "verdadero"Como el patrón"[ -]"Usó ambos métodos para que coincidan con el espacio.

Regex con cuantificadores en PowerShell

Los cuantificadores manejan el número de veces que cada elemento debe aparecer en la cadena de entrada. Algunos cuantificadores disponibles en PowerShell son los siguientes:

  • [*] se usa para especificar la ocurrencia de cualquier elemento como "cero o más veces."
  • [+] se usa para especificar la ocurrencia de cualquier elemento como "una o más veces."
  • [?] se usa para especificar la ocurrencia de cualquier elemento como "uno o cero veces."
  • [norte] se usa para especificar la aparición de cualquier elemento exactamente como "n veces."
  • Nuevo Méjico se usa para especificar la ocurrencia de cualquier elemento como "al menos n veces, pero no más que m."

El comando dado a continuación devolverá verdadero para cualquier nombre del servidor, incluso nombres de servidor sin guiones.

> 'Server01' -match '[A -Z]+-?\ d \ d '

Ahora, intentaremos hacer coincidir un número de teléfono con el Regex "\ D 3-\ d 3-\ d 4".

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

La expresión regresará "verdadero"Si encuentra un número de teléfono correcto de acuerdo con el patrón especificado.

En la siguiente parte, usaremos regex en los scripts de PowerShell. Para eso, en primer lugar, abre tu Windows PowerShell ISE, y crear un nuevo archivo:

Escriba el código dado a continuación para la coincidencia numérica y de cadena. En este guión, hemos almacenado un patrón en el "$ mensaje" variable. En la segunda línea, esto "$ mensaje"La variable coincidirá con su valor con el"error"Regex usando el"-fósforo"Operador. También hemos agregado una línea de código para la coincidencia de patrones numéricos:

$ mensaje = 'Hay un error con su archivo'
$ Mensaje -Match 'Error'
'123-45-6789' -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'

Guarde este archivo como "TestFile1.PS1"PowerShell script y ejecutarlo presionando el"Correr" botón.

Ambos patrones coinciden con el RegEx especificado para que esta expresión regrese "verdadero"Para cada caso.

También puedes igualar una regla con una matriz. Para demostrar esto, hemos declarado una matriz "$ datos"En nuestro guión. Esta matriz contiene algunos valores numéricos y de cadena. Después de agregar valores a la matriz, lo coincidiremos con una regex: "\ d \ d \ d- \ d \ d- \ d \ d \ d \ d". Esta declaración verificará si la matriz tiene algún valor numérico con el patrón especificado en la expresión regular e imprimirlo en su terminal PowerShell.

$ data = @(
"Este es un texto general"
"El número de teléfono es 333-99-2222"
"Otra declaración de texto"
"Número de teléfono 444-44-4444"
)
$ data -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'


El operador de reemplazo utiliza regex para la coincidencia de patrones. Este operador busca un patrón y luego lo reemplaza con el otro patrón especificado en el comando. Por ejemplo, en el script dado a continuación, tenemos el "$ mensaje"Variable que contiene un valor de cadena"Hola, mi nombre es Sharqa ". Queremos reemplazar "Sharqa" con "Sharqa Hameed". Con el "-reemplazar"Operador, escribiremos el patrón que queremos reemplazar en primer lugar, y después de eso, agregaremos el patrón que queremos ser reemplazados.

$ mensaje = "Hola, mi nombre es Sharqa"
$ Message -Replace 'Sharqa', 'Sharqa Hameed'

Guarda esto "TestFile1.PS1"PowerShell Script. La ejecución de este script generará el valor del "$ mensaje"Variable con la cadena reemplazada"Sharqa" con "Sharqa Hameed".

Conclusión

Hay numerosos conceptos de programación donde puede usar regular o donde es posible que ya esté usando regex sin darse cuenta. Potencia Shell hace un excelente trabajo al incorporar las características de regex en su idioma.

Con el conocimiento obtenido de este artículo, debe poder usar Regex en PowerShell para que coincidan con los patrones numéricos o de texto mientras buscas frases altamente complejas o específicas. También le hemos mostrado cómo usar el cuantificador de regex en los scripts de PowerShell.