Skip to content

Instantly share code, notes, and snippets.

@viniciusgonmelo
Last active May 12, 2023 05:13
Show Gist options
  • Save viniciusgonmelo/74ec592ffc8a5129b097deac64e7f60a to your computer and use it in GitHub Desktop.
Save viniciusgonmelo/74ec592ffc8a5129b097deac64e7f60a to your computer and use it in GitHub Desktop.
Regex em Perl

Regex - Perl

Match

$string = "nome";
$string =~ m/nome/; # true

Não precisa do m se os delimitadores são / (padrão):

$string = "nome";
$string =~ /nome/;

Caracteres especiais

  • . - qualquer caractere (exceto quebra de linha)
  • * - zero ou mais caracteres
  • + - um ou mais
  • ? - zero ou um
  • {n} - n vezes
  • {n,} - mínimo n vezes
  • {n,m} - mínimo n vezes, máximo m vezes
  • \ - metacaractere
  • ^ - começo da linha
  • $ - final da linha (ou antes da quebra de linha)
  • | - OR
  • () - grupo de captura
  • [] - classe de caractere ([a-z], [0-9] )
  • \w - [a-zA-Z0-9_]
  • \d - [0-9]
  • \s - espaços
  • \W - inverte \w
  • \D - inverte \d
  • \S - inverte \s
  • \b - limite de palavras (espaço, ponto, exclamação etc.)
  • \t - tab
  • \n - newline
  • \r- return

Modificadores/flags

  • m - trata como múltiplas linhas
  • s - trata como linha única (. dá match com newline)
  • i - case insensitive
  • x - permite espaço na expressão
  • g - match global
  • e - executa código

Exemplos

Caracteres especiais e modificadores:

$string =~ s\s+/ /g; # mais de um espaço por espaço
$string =~ s/^\s+//; # remove espaços no começo da linha
$string =~ s/\s$//; # remove espaços no final da linha

Grupos de captura:

$string = "nome";
$string =~ m/(n...)/; # grupo de captura, guarda o resultado do match
$nome = $1; # "nome"

Substituições:

$string = "nome sobrenome"
$string =~ s/(\w)(\w+)/uc($1).$2/eg; # executa código perl na substituição
perl -e '$s="nome sobrenome"; $s =~ s/(\w)(\w+)/uc($1).$2/eg; print "$s\n"' # idem mas executando perl no shell
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment