expressões regulares Perl
Regex (expressão regular) descreve um conjunto de cordas que podem ser usados para verificar se uma seqüência contém um certo substring substring correspondência não substituir ou remover uma condição corresponde a uma substring de uma string e assim por diante.
função regex Perl da linguagem é muito poderoso, basicamente, a língua comum mais poderosa, muitos design de linguagem apoio de expressão regular quando eles são referência expressões regulares Perl.
Três formas de expressões regulares Perl são correspondidos, a substituição e conversão:
Jogo: m /
/ (Também abreviado como / / M Omitido) Substituir: s /
/ / Conversão: tr /
/ /
Estas três formas e são geralmente= ~ ou! ~Com o uso = ~ representa jogo! ~ Disse que eles não se encontraram.
operador de jogo
Jogo operador m // usado para corresponder a uma cadeia ou uma instrução de expressão regular, por exemplo, para coincidir com o escalar $ bar no "run", o código da seguinte forma:
#!/usr/bin/perl $bar = "I am w3big site. welcome to w3big site."; if ($bar =~ /run/){ print "第一次匹配\n"; }else{ print "第一次不匹配\n"; } $bar = "run"; if ($bar =~ /run/){ print "第二次匹配\n"; }else{ print "第二次不匹配\n"; }
O programa acima, a saída é:
第一次匹配 第二次匹配
modificadores padrão de correspondência
Há algum padrão comum modificadores correspondentes, como segue:
modificadores | descrição |
---|---|
Eu | Ignorar modo de capitalização |
m | modo multi-line |
o | Apenas atribuído uma vez |
s | modo linha-única, "." Match "\ n" (o padrão não corresponde) |
X | Ignorar modo em branco |
g | Jogo global |
cg | Após o fracasso da harmonização global, permite encontrar um texto correspondente novamente |
variáveis regex
Perl existirá após o processamento para corresponder ao valor dos três nome variável especial:
- A parte frontal daparte de cadeia correspondente: $ `
- $ &: String Matching
- $ ': Não é um jogo para os restantes cordas
Se estas três variáveis juntos, você vai ter a string original.
Exemplos são os seguintes:
#!/usr/bin/perl $string = "welcome to w3big site."; $string =~ m/run/; print "匹配前的字符串: $`\n"; print "匹配的字符串: $&\n"; print "匹配后的字符串: $'\n";
A saída do programa acima é:
匹配前的字符串: welcome to 匹配的字符串: run 匹配后的字符串: oob site.
operadores de substituição
Substituição operador s /// operador é para coincidir com a expansão do uso da nova cadeia para substituir a seqüência de caracteres especificada. O formato de base é a seguinte:
s/PATTERN/REPLACEMENT/;
PADRÃO para coincidir com o modelo, substituição para substituir a string.
Por exemplo, "google" Vamos substituir a seguinte cadeia é "w3big":
#!/usr/bin/perl $string = "welcome to google site."; $string =~ s/google/w3big/; print "$string\n";
A saída do programa acima é:
welcome to w3big site.
modificador de operação de substituição
Substituir modificador de funcionamento como se segue:
modificadores | descrição |
---|---|
Eu | Se você adicionar "i" no modificador, então o caso sensibilidade regular será cancelado, a "a" e "A" é o mesmo. |
m | O início padrão regular "^" e no fim "$" é apenas para seqüência regular se acoplado com um modificador de "m", em seguida, o início eo fim de cada linha irá se referir à string: No início de cada linha é "^", final é "$". |
o | Expressão é executado apenas uma vez. |
s | Se você adicionar "s" no modificador, então o padrão. "" Em nome de qualquer caractere, exceto nova linha vai se transformar em qualquer personagem, incluindo nova linha é! |
X | Se você adicionar o modificador, caracteres em branco expressão será ignorado, a menos que tenha sido escapado. |
g | Substitua todas as cadeias correspondentes. |
e | Como uma expressão de cadeia de substituição |
Operadores de conversão
O seguinte é uma modificadores operador de conversão associados:
modificadores | descrição |
---|---|
c | Conversão de todos os caracteres não especificada |
d | Apagar todos os caracteres especificados |
s | A mesma saída encolhido a uma pluralidade de caracteres |
Os exemplos a seguir o $ variável string com todas as letras minúsculas convertidos em maiúsculas:
#!/usr/bin/perl $string = 'welcome to w3big site.'; $string =~ tr/a-z/A-z/; print "$string\n";
A saída do programa acima é:
WELCOME TO w3big SITE.
O exemplo a seguir utiliza / s variável $ string repetindo caracteres apagados:
#!/usr/bin/perl $string = 'w3big'; $string =~ tr/a-z/a-z/s; print "$string\n";
A saída do programa acima é:
runob
Mais exemplos:
$string =~ tr/\d/ /c; # 把所有非数字字符替换为空格 $string =~ tr/\t //d; # 删除tab和空格 $string =~ tr/0-9/ /cs # 把数字间的其它字符替换为一个空格。
regras mais regulares de expressão
expressão | descrição |
---|---|
. | Corresponder a todos os personagens, exceto nova linha |
x? | Jogo 0 ou uma string x |
x * | Jogo 0 ou mais vezes x corda, mas o número mínimo de possíveis correspondências |
x + | Jogo 1 ou mais vezes x corda, mas o número mínimo de possíveis correspondências |
. * | Jogo 0 ou mais vezes qualquer caractere |
. + | Jogo 1 ou mais vezes por qualquer caractere |
{M} | Corresponder exatamente à seqüência de caracteres especificada de m |
{M, n} | Jogos m ou mais ou menos especificada cadeia n |
{M} | Jogo m ou corda mais específico |
[] | Que corresponde a um caractere dentro de [] |
[^] | O jogo não conhecer os personagens em [] |
[0-9] | Corresponder a todos os caracteres numéricos |
[Az] | Combinar todos os caracteres alfabéticos em minúsculas |
[^ 0-9] | Corresponder a todos os caracteres não-numéricos |
[^ AZ] | Jogos quaisquer caracteres alfabéticos minúsculos |
^ | Um personagem que coincide com o início |
$ | Coincide com o caractere final do personagem |
\ D | Corresponde a um caractere de dígito, e [0-9] a mesma sintaxe |
\ D + | Combinar cadeia numérica múltipla e [0-9] + sintaxe |
\ D | Não-digital, o outro com \ d |
\ D + | Não-digital, o outro com \ d + |
\ W | Uma série de letras ou números, e [a-zA-Z0-9] sintaxe |
\ W + | E [a-zA-Z0-9] + sintaxe |
\ W | letras não inglesas ou números, strings e [^ a-zA-Z0-9] a mesma sintaxe |
\ W + | E [^ a-zA-Z0-9] + sintaxe |
\ S | Espaços e [\ n \ t \ r \ f] a mesma sintaxe |
\ S + | E [\ n \ t \ r \ f] + como |
\ S | Não-espaço, e [^ \ n \ t \ r \ f] a mesma sintaxe |
\ S + | E [^ \ n \ t \ r \ f] + sintaxe |
\ B | Inglês letras, números correspondentes cadeia fronteira |
\ B | Incompatíveis no alfabética, corda limite numérico |
a | b | c | Em linha com uma cadeia de caracteres que corresponde ao caráter ou carácter b ou c |
abc | cadeia Abc correspondente (padrão) contêm () vai se lembrar este símbolo para localizar a cadeia, é uma sintaxe muito útil. A primeira cadeia (dentro) encontraram esta variável se torna $ 1 ou \ 1 variável, ea segunda (interna) encontraram uma variável de cadeia em uma variável $ 2 ou \ 2, e assim por diante para baixo. |
/ Padrão / i | i Este parâmetro indica ignorar caso em Inglês, ou seja, quando a cadeia de jogo, ignorando a pergunta caso em Inglês. \ Se você quiser encontrar um caractere especial no modo padrão, como "*", terá que adicionar na frente do caractere em \ símbolo, isso vai permitir caracteres especiais falhar |