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. |