Expressão regular (expressão regular) descreve um padrão de correspondência de string, que pode ser usado para verificar se uma string contém uma determinada substring, substituir a substring correspondente ou extrair uma substring que atenda a uma determinada condição de uma determinada espera de string.
A função de expressão regular da linguagem Perl é muito poderosa, basicamente a mais poderosa entre as linguagens comumente usadas. Muitas linguagens referem-se às expressões regulares do Perl ao projetar o suporte a expressões regulares.
As três formas de expressões regulares Perl são correspondência, substituição e transformação:
Correspondência: m/
Substituição: s/
Conversão: tr/
Essas três formas são geralmente usadas com =~ ou !~ , =~ significa correspondência, !~ significa não correspondência.
O operador de correspondência m// é usado para corresponder a uma instrução de string ou a uma expressão regular. Por exemplo, para corresponder a "run" no escalar $bar, o código é o seguinte:
Executando o programa acima, o resultado de saída é:
Primeira partida Segunda partida
A correspondência de padrões possui alguns modificadores comumente usados, conforme mostrado na tabela a seguir:
modificador | descrever |
---|---|
eu | Ignorar maiúsculas e minúsculas no padrão |
eu | modo multilinha |
ó | Atribuir valor apenas uma vez |
é | Modo de linha única, "." corresponde a "n" (o padrão não corresponde) |
x | Ignorar espaços em branco no padrão |
g | correspondência global |
cg | Depois que a correspondência global falhar, a string correspondente poderá ser pesquisada novamente. |
Depois que o Perl for processado, haverá três nomes de variáveis especiais para os valores correspondentes:
$`: A parte anterior da string correspondente
$&: string correspondente
$': Ainda não há strings correspondentes
Se você juntar essas três variáveis, obterá a string original.
Os exemplos são os seguintes:
O resultado de saída da execução do programa acima é:
String antes da correspondência: bem-vindo ao String antes da correspondência: execute String após a correspondência: oob site.
O operador de substituição s/// é uma extensão do operador correspondente e substitui a string especificada por uma nova string. O formato básico é o seguinte:
s/PADRÃO/SUBSTITUIÇÃO/;
PATTERN é o padrão correspondente, REPLACEMENT é a string de substituição.
Por exemplo, substituímos “google” na seguinte string por “codercto”:
O resultado de saída da execução do programa acima é:
bem-vindo ao site codercto.
Os modificadores da operação de substituição são mostrados na tabela a seguir:
modificador | descrever |
---|---|
eu | Se "i" for adicionado ao modificador, a expressão regular cancelará a distinção entre maiúsculas e minúsculas, ou seja, "a" e "A" são iguais. |
eu | O início regular padrão "^" e o final "$" são apenas para strings regulares. Se "m" for adicionado ao modificador, o início e o fim se referirão a cada linha da string: o início de cada linha é "^". ", Termina com "$". |
ó | A expressão é executada apenas uma vez. |
é | Se "s" for adicionado ao modificador, o "." padrão que representa qualquer caractere diferente de caracteres de nova linha se tornará qualquer caractere, incluindo caracteres de nova linha! |
x | Se este modificador for adicionado, os caracteres de espaço em branco na expressão serão ignorados, a menos que tenham sido escapados. |
g | Substitua todas as strings correspondentes. |
e | Substitua string como expressão |
A seguir estão os modificadores relacionados ao operador de conversão:
modificador | descrever |
---|---|
c | Converta todos os caracteres não especificados |
d | Exclua todos os caracteres especificados |
é | Condense vários caracteres de saída idênticos em um |
O exemplo a seguir converte todas as letras minúsculas da variável $string em letras maiúsculas:
#!/usr/bin/perl $string = 'bem-vindo ao site do codercto.';$string =~ tr/az/Az/;print "$stringn";
O resultado de saída da execução do programa acima é:
BEM VINDO AO SITE DO CODERCTO.
O exemplo a seguir usa /s para remover caracteres repetidos da variável $string:
O resultado de saída da execução do programa acima é:
runob
Mais exemplos:
$string =~ tr/d/ /c; # Substitua todos os caracteres não numéricos por espaços $string =~ tr/t //d; # Substitua outros caracteres entre números por um espaço.
expressão | descrever |
---|---|
. | Corresponde a todos os caracteres, exceto caracteres de nova linha |
x? | Corresponder x string 0 ou uma vez |
x* | Combine x string 0 ou mais vezes, mas combine o número mínimo de vezes possível |
x+ | Combine x string 1 ou mais vezes, mas combine o número mínimo de vezes possível |
.* | Corresponde a qualquer caractere 0 ou mais vezes |
.+ | Combine qualquer caractere 1 ou mais vezes |
{m} | Corresponde exatamente a m strings especificadas |
{m,n} | Corresponde a mais de m e menos de n strings especificadas |
{m,} | Combine m ou mais strings especificadas |
[] | Corresponde caracteres dentro de [] |
[^] | Corresponde a caracteres que não correspondem a [] |
[0-9] | Corresponde a todos os caracteres numéricos |
[az] | Corresponde a todos os caracteres alfabéticos minúsculos |
[^0-9] | Corresponde a todos os caracteres não numéricos |
[^az] | Corresponde a todos os caracteres alfabéticos não minúsculos |
^ | Corresponde aos caracteres que começam com |
$ | Corresponde ao caractere no final do caractere |
d | Corresponde a um caractere numérico, a mesma sintaxe de [0-9] |
d+ | Corresponde a várias strings numéricas, a mesma sintaxe de [0-9]+ |
D | Não-número, igual aos outrosd |
D+ | Não-número, o mesmo que d+ para outros |
c | Uma sequência de letras ou números em inglês, a mesma sintaxe de [a-zA-Z0-9_] |
c+ | Mesma sintaxe de [a-zA-Z0-9_]+ |
C | Uma sequência de letras ou números que não sejam do inglês, com a mesma sintaxe de [^a-zA-Z0-9_] |
C+ | Mesma sintaxe de [^a-zA-Z0-9_]+ |
s | Espaço, mesma sintaxe de [ntrf] |
s+ | O mesmo que [ntrf]+ |
S | Não-espaço, mesma sintaxe de [^ntrf] |
S+ | Mesma sintaxe de [^ntrf]+ |
b | Corresponde a strings delimitadas por letras e números ingleses |
B | Corresponde a strings que não são delimitadas por letras inglesas ou valores numéricos |
a|b|c | Corresponde a strings que correspondem a um caractere, caractere b ou caractere c |
abc | Combine a string (padrão) que contém abc() Este símbolo lembrará a string encontrada, que é uma sintaxe muito prática. A string encontrada no primeiro () torna-se a variável $1 ou a variável 1, a string encontrada no segundo (). torna-se a variável $2 ou a variável 2 e assim por diante. |
/padrão/eu | i Este parâmetro indica que o caso em inglês é ignorado, ou seja, ao combinar strings, o problema de caso em inglês não é considerado. Se você deseja encontrar um caractere especial no modo padrão, como "*", você precisa adicioná-lo antes deste caractere Use o símbolo para invalidar caracteres especiais. |