Como usar Regex em PowerShell

Como usar Regex em PowerShell
Expressão regulars ou regex pode ser complicado para os iniciantes entenderem, mas é uma técnica muito eficaz para interagir com strings. A linguagem regex é um atalho de descrição de padrão poderoso e é usado para analisar e combinar o texto. Powershell usa expressões regulares De várias maneiras. Como os comandos ou cmdlets do PowerShell são tão fortemente integrados, é fácil esquecer de usar Regex. Talvez você não saiba que alguns desses comandos já estão usando regex.

PowerShell pode trabalhar com fluxos de objetos em vez de apenas texto. No entanto, é relativamente capaz de processamento de texto. Se você fizer algum trabalho relacionado ao processamento de texto, saberá que o regex é um dos conceitos mais importantes em qualquer linguagem de programação. Neste artigo, você mostrará como Para usar regex no PowerShell. Então, vamos começar!

O que é regex em PowerShell?

Um regex é uma sequência específica de caracteres que utiliza uma sintaxe especial para ajudá -lo a encontrar ou combinar strings ou um conjunto de strings. Regex é capaz de pesquisar, editar e manipular dados e texto. Esta expressão instrui o motor a corresponder ao texto fornecido.

Agora, vamos olhar para o método de Usando Regex em PowerShell.

Regex com literais de caráter em PowerShell

Primeiro de tudo, executaremos uma expressão regular usando o “-corresponderOperador. Este operador toma uma expressão regular para fins de correspondência de padrões e retornos “$ verdadeiro“Se o padrão corresponder.

Agora, vamos executar nosso primeiro regex, no qual verificaremos se o “livro”Combina com o padrão“OK”:

> 'livro' -Match 'ok'

Esta expressão retornará verdadeira porque o livro contém a string “OK““("Livro]").

Regex com o grupo de personagens em PowerShell

Em seguida, usaremos o [Grupo de personagens] Para combinar com vários caracteres de uma só vez. No exemplo abaixo, um regex “B [IOG]”É utilizado para combinar com“grande”. A execução deste regex verificará se os personagens entre “b" e "g"Na combinação" Big "com o grupo de personagens"[iou]”Presente no“b [iou] g”Regex:

> 'Big' -Match 'b [iou] g'

Na próxima declaração, adicionamos “livro,”Que não corresponde ao regex especificado. Execute -o e vamos ver qual resultado essa declaração mostrará:

> 'livro' -Match 'b [iou] g'

Esta expressão retornará “falso" como "livro"Não corresponde com o regex"b [iou] g”.

Regex com vários padrões em PowerShell

Um padrão pode ser uma coleção de personagens. Os personagens podem ser numéricos [0-9], ou baseado em ASCII [ -~], ou alfabético [A-Z].

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

Essa expressão retornará verdadeira à medida que o padrão corresponde a qualquer número de dois dígitos "42", no nosso caso.

Qualquer dígito decimal corresponderá ao “\ d”Classe de personagem. Por outro lado, "\ D”Comparará qualquer dígito não decimal.

> 'Server-01' -Match 'Server- \ d \ d'

A expressão acima dada retornará true se corresponder a um nome de servidor entre (servidor-01-servidor-99).

Qualquer personagem de palavra “[A-Z A-Z 0-9]”Será correspondido pelo“\c”Classe de personagem. Utilizar “\C”Para combinar qualquer personagem não-palavras.

> 'Livro' -Match '\ w'

A execução da expressão acima do rumo retornará verdadeira como o padrão “Livro”Matha o personagem da primeira palavra 'B'.

Em Regex, o período “(.)”É considerado um personagem curinga. Exceto por uma nova linha, ela corresponderá a qualquer personagem “(\ n)”. A expressão abaixo do ritmo retornará verdadeira porque o padrão “[A1 \]”Combina quatro caracteres.

> 'a1 \' -match '…'

O "\ s”A classe de personagens é usada para combinar com o espaço em branco. Enquanto, "\ S”Ou pode ser utilizado para corresponder caracteres que não são do WhitaSpace.

> ' -' -match '\ s-'

A execução da expressão acima do rumo retornará “verdadeiro"Como o padrão"[ -]”Usou os dois métodos para corresponder ao espaço.

Regex com quantificadores em PowerShell

Os quantificadores lidam com o número de vezes que cada elemento deve aparecer na sequência de entrada. Alguns quantificadores disponíveis no PowerShell são os seguintes:

  • [*] é usado para especificar a ocorrência de qualquer elemento como “zero ou mais vezes.““
  • [+] é usado para especificar a ocorrência de qualquer elemento como “uma ou mais vezes.““
  • [[?] é usado para especificar a ocorrência de qualquer elemento como “um ou zero vezes.““
  • [n] é usado para especificar a ocorrência de qualquer elemento exatamente como “n vezes.”
  • n, m é usado para especificar a ocorrência de qualquer elemento como “pelo menos n vezes, mas não mais que M.““

O comando abaixo do ritmo retornará true para qualquer nome de servidor, mesmo nomes de servidores sem traços.

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

Agora, tentaremos combinar um número de telefone com o regex “\ d 3-\ d 3-\ d 4”.

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

A expressão retornará “verdadeiro"Se descobrir um número de telefone correto de acordo com o padrão especificado.

Na próxima parte, usaremos o Regex em scripts do PowerShell. Para isso, em primeiro lugar, abra seu Windows PowerShell Ise, e crie um novo arquivo:

Escreva o código abaixo para a correspondência numérica e de string. Neste script, armazenamos um padrão no “$ mensagem" variável. Na segunda linha, este “$ mensagem”A variável corresponderá ao seu valor ao“erro”Regex usando o“-corresponderOperador. Também adicionamos uma linha de código para correspondência de padrões numéricos:

$ message = 'Há um erro com o seu arquivo'
$ mensagem -Match 'Erro'
'123-45-6789' -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'

Salve este arquivo como “testfile1.ps1”PowerShell script e execute -o pressionando o“Correr" botão.

Ambos os padrões são combinados com o regex especificado para que essa expressão retorne “verdadeiro”Para cada caso.

Você também pode combinar um regex com uma matriz. Para demonstrar isso, declaramos uma matriz “$ dados”Em nosso script. Esta matriz contém alguns valores numéricos e de string. Depois de adicionar valores à matriz, combinaremos com uma regex: “\ d \ d \ d- \ d \ d- \ d \ d \ d \ d““. Esta declaração verificará se a matriz possui algum valores numéricos com o padrão especificado na expressão regular e imprimi -lo no seu terminal PowerShell.

$ data = @(
"Este é um texto geral"
"O número de telefone é 333-99-2222"
"Outra declaração de texto"
"Número de telefone 444-44-4444"
)
$ data -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'


O operador de substituição utiliza regex para correspondência de padrões. Este operador procura um padrão e depois o substitui pelo outro padrão especificado no comando. Por exemplo, no script abaixo do dado, temos o “$ mensagem”Variável contendo um valor de string“Oi, meu nome é sharqa ”. Queremos substituir “sharqa" com "Sharqa Hameed”. Com o "-substituirOperador, escreveremos o padrão que queremos substituir em primeiro lugar e, depois disso, adicionaremos o padrão que queremos ser substituídos.

$ message = "oi, meu nome é sharqa"
$ message -Rplace 'sharqa', 'sharqa hameed'

Guarde isso "testfile1.ps1Script PowerShell. A execução deste script produzirá o valor do “$ mensagem”Variável com a string substituída“Sharqa" com "Sharqa Hameed”.

Conclusão

Existem inúmeros conceitos de programação onde você pode usar regex ou onde você já pode estar usando regex sem perceber. Powershell Faz um excelente trabalho de incorporar recursos regex em seu idioma.

Com o conhecimento adquirido neste artigo, você poderá usar o Regex no PowerShell para combinar com padrões numéricos ou de texto enquanto procura frases altamente complexas ou específicas. Também mostramos como usar o quantificador regex em scripts do PowerShell.