Download PDF
Expressão Regular é um grupo de caracteres ou símbolos que é usado para encontrar um padrão específico de algum texto; você pode chamá-los de wildcards em esteróides, se você quiser. Como desenvolvedor, dominar experssões regulares pode ser uma ferramenta poderosa para ter em seu toolbelt; você definitivamente terá que usá-las em seus programas em algum momento, procurar e substituir usando expressões regulares em IDEs vem realmente a calhar às vezes e eu me encontro usando-as na linha de comando todos os dias.
Aplicações e linguagens de programação diferentes podem ter implementações diferentes para expressões regulares, mas os conceitos subjacentes são na maioria das vezes os mesmos. Neste post, vou explicar tudo o que você precisa saber sobre expressões regulares.
Uma expressão regular é um padrão que é comparado com uma string de assunto da esquerda para a direita. A palavra “Expressão regular” é uma expressão oral, você normalmente encontrará o termo abreviado como “regex” ou “regexp”. Expressão regular é usada para substituir um texto dentro de uma string, validar uma forma, extrair uma substring de uma string baseada em uma correspondência de padrão, e muito mais.
Imagine que você está escrevendo uma aplicação e você quer definir as regras para quando um usuário escolhe seu nome de usuário. Queremos permitir que o nome de utilizador contenha letras, números, sublinhados e hífenes. Nós também queremos limitar o número de caracteres no nome de usuário para que ele não fique feio. Usamos a seguinte expressão regular para validar um nome de usuário:
Acima da expressão regular pode aceitar as cadeias de caracteres john_doe
, jo-hn_doe
e john12_as
. Não corresponde a Jo
porque essa string contém letra maiúscula e também é muito curta.
- Tabela de Conteúdos
- Fósforos básicos
- Caracteres Meta
- 2.1 Parada completa
- 2.2 Conjunto de caracteres
- 2.2.1 Conjunto de caracteres negado
- 2.3 Repetições
- 2.3.1 A Estrela
- 2.3.2 O símbolo Plus
- 2.3.3 O ponto de interrogação
- 2.4 Braces
- 2,5 Grupo de caracteres
- 2.6 Alternação
- 2.7 Escaping special character
- 2.8 Âncoras
- 2.8.1 Caret
- 2.8.2 Dollar
- Conjuntos de caracteres de corda
- Lookaround
- 4.1 Positive Lookahead
- 4.2 Lookahead negativo
- 4.3 Positive Lookbehind
- 4.4 Lookbehind negativo
- Flags
- 5.1 Case Insensitive
- 5.2 Procura global
- 5.3 Multilinha
- Casamento ganancioso vs preguiçoso
Tabela de Conteúdos
- Basic Matchers
- Caracteres Meta
- Parada completa
- Conjunto de caracteres
- Conjunto de caracteres negados
- Repetições
- O Estrela
- O Plus
- O Ponto de interrogação
- Braces
- Grupo de caracteres
- Alternação
- Escaping special character
- Ancoras
- Caret
- Dólar
- Sets de caracteres de corda
- Lookaround
- Positivo Lookahead
- Negativo Lookahead
- Positivo Lookbehind
- Flags
- Caso Insensível
- Pesquisa global
- Multilina
- Casamento verde vs preguiçoso
>
>
>
>
>
>
>
Fósforos básicos
Uma expressão regular é apenas um padrão de caracteres que usamos para executar
pesquisar em um texto. Por exemplo, a expressão regular the
significa: a letrat
, seguida pela letra h
, seguida pela letra e
.
the => The fat cat sat on the mat.
Teste a expressão regular
A expressão regular 123
corresponde à string 123
. A expressão regular é comparada com uma string de entrada, comparando cada caractere da string regular
expressão com cada caractere da string de entrada, um após o outro. Regular
expressões são normalmente sensíveis a maiúsculas e minúsculas, então a expressão regular The
não se encaixa na string the
.
The => The fat cat sat on the mat.
Teste a expressão regular
Caracteres Meta
Caracteres Meta são os blocos de construção das expressões regulares. Meta
Caracteres não se representam a si mesmos, mas são interpretados de alguma forma
Especial. Alguns meta-caracteres têm um significado especial e são escritos dentro de parênteses rectos. Os meta-caracteres são os seguintes:
2.1 Parada completa
Parada completa . é o exemplo mais simples de meta-caracteres. O meta-caractere .
corresponde a qualquer caractere individual. Ele não combinará com retorno ou caracteres de nova linha.
Por exemplo, a expressão regular .ar
significa: qualquer caractere, seguido pela letra a
, seguido pela letra r
.
.ar => The car parked in the garage.
Teste a expressão regular
2.2 Conjunto de caracteres
Conjuntos de caracteres também são chamados de classe de caracteres. Colchetes são usados para
especificar conjuntos de caracteres. Use um hífen dentro de um conjunto de caracteres para especificar o conjunto de caracteres. A ordem do intervalo de caracteres entre parênteses rectos
não importa. Por exemplo, a expressão regular he
significa: uma maiúscula T
ou minúscula t
, seguida pela letra h
, seguida pela letra e
.
he => The car parked in the garage.
Teste a expressão regular
Um período dentro de um conjunto de caracteres, no entanto, significa um período literal. A regular
expressão ar
significa: um caractere minúsculo a
, seguido pela letra r
,
seguido por um ponto .
caracter.
ar => A garage is a good place to park a car.
Teste a expressão regular
2.2.1 Conjunto de caracteres negado
Em geral, o símbolo do carpete representa o início da string, mas quando é
dactilografado após a abertura do colchete, nega o conjunto de caracteres. Para
exemplo, a expressão regular ar
significa: qualquer caractere exceto c
,
seguido pelo caractere a
, seguido pela letra r
.
ar => The car parked in the garage.
Teste a expressão regular
2.3 Repetições
De acordo com os metacaracteres +
, *
ou ?
são usados para especificar quantas vezes um subpadrão pode ocorrer. Estes meta-caracteres actuam de forma diferente em diferentes
situações.
2.3.1 A Estrela
O símbolo *
corresponde a zero ou mais repetições do matcher anterior. A expressão regular a*
significa: zero ou mais repetições do caractere precedente em minúsculas a
. Mas se ela aparecer após um conjunto de caracteres ou classe, então ela encontra as repetições de todo o conjunto de caracteres. Por exemplo, a expressão regular *
significa: qualquer número de letras minúsculas numa linha.
* => The car parked in the garage #21.
Teste a expressão regular
O símbolo *
pode ser usado com o meta caractere . para combinar com qualquer string de
caracteres .*
. O símbolo *
pode ser usado com o caractere do espaço em branco \s
para combinar com uma cadeia de caracteres do espaço em branco. Por exemplo, a expressão\s*cat\s*
significa: zero ou mais espaços, seguido por caracteres minúsculos c
,
seguido por caracteres minúsculos a
, seguido por caracteres minúsculos t
, seguido por zero ou mais espaços.
\s*cat\s* => The fat cat sat on the concatenation.
Teste a expressão regular
2.3.2 O símbolo Plus
O símbolo +
corresponde a uma ou mais repetições do caracter anterior. Por exemplo, a expressão regular c.+t
significa: letra minúscula c
, seguida de pelo menos um caractere, seguido do caractere minúsculo t
. É preciso esclarecer que t
é o último t
na frase.
c.+t => The fat cat sat on the mat.
Teste a expressão regular
2.3.3 O ponto de interrogação
Na expressão regular o meta caractere ?
torna o caractere precedente
opcional. Este símbolo corresponde a zero ou a uma instância do caractere precedente. Por exemplo, a expressão regular ?he
significa: Opcional a letra maiúscula T
, seguida do caractere minúsculo h
, seguida do caractere minúsculo e
.
he => The car is parked in the garage.
Teste a expressão regular
?he => The car is parked in the garage.
Teste a expressão regular
2.4 Braces
Em expressões regulares são usados braces que também são chamados quantificadores para
especificar o número de vezes que um caracter ou um grupo de caracteres pode ser
repetido. Por exemplo, a expressão regular {2,3}
significa: Combine pelo menos 2 dígitos mas não mais de 3 ( caracteres no intervalo de 0 a 9).
{2,3} => The number was 9.9997 but we rounded it off to 10.0.
Teste a expressão regular
Podemos deixar de fora o segundo número. Por exemplo, a expressão regular{2,}
significa: Corresponde a 2 ou mais dígitos. Se também removermos a vírgula a
expressão regular {3}
significa: Combine exatamente 3 dígitos.
{2,} => The number was 9.9997 but we rounded it off to 10.0.
Teste a expressão regular
{3} => The number was 9.9997 but we rounded it off to 10.0.
Teste a expressão regular
2,5 Grupo de caracteres
Grupo de caracteres é um grupo de sub-padrões que é escrito dentro de Parênteses (…)
. Como discutimos antes disso na expressão regular, se colocarmos um quantificador após um caractere, então ele irá repetir o caractere anterior. Mas se colocarmos um quantificador depois de um grupo de caracteres então ele repetirá todo o grupo de caracteres. Por exemplo, a expressão regular (ab)*
corresponde a zero ou mais repetições do caractere ab
. Também podemos usar a alternância |
meta caractere dentro do grupo de caracteres. Por exemplo, a expressão regular (c|g|p)ar
significa: caractere minúsculo c
, g
ou p
, seguido pelo caractere a
, seguido pelo caractere r
.
(c|g|p)ar => The car is parked in the garage.
Teste a expressão regular
2.6 Alternação
Na expressão regular Barra vertical |
é usada para definir a alternância. A alternância é como uma condição entre múltiplas expressões. Agora, você pode estar pensando que o conjunto de caracteres e a alternância funcionam da mesma maneira. Mas a grande diferença entre conjunto de caracteres e alternação é que o conjunto de caracteres funciona no nível de caracteres, mas alternação funciona no nível de expressão. Por exemplo, a expressão regular (T|t)he|car
significa: caractere maiúsculo T
ou minúsculo t
, seguido por caractere minúsculo h
, seguido por caractere minúsculo e
ou caractere minúsculo c
, seguido por caractere minúsculo a
, seguido por caractere minúsculo r
.
(T|t)he|car => The car is parked in the garage.
Teste a expressão regular
2.7 Escaping special character
Backslash \
é usado em expressão regular para escapar ao próximo caractere. Isto
permite-nos especificar um símbolo como um caractere correspondente, incluindo reservado
caracteres { } / \ + * . $ ^ | ?
. Para usar um caractere especial como um caractere correspondente prepend \ antes dele.
Por exemplo, a expressão regular . é usada para corresponder a qualquer caractere exceto
newline. Agora para combinar . em uma string de entrada a expressão regular (f|c|m)at\.?
significa: letra minúscula f
, c
ou m
seguida por letra minúscula
caracter a
, seguida por letra minúscula t
, seguida por letra minúscula .
caractere opcional.
(f|c|m)at\.? => The fat cat sat on the mat.
Teste a expressão regular
2.8 Âncoras
Em expressões regulares, usamos âncoras para verificar se o símbolo correspondente é o
símbolo de partida ou símbolo de fim da cadeia de entrada. As âncoras são de dois tipos: O primeiro tipo é Caret ^
que verifica se o caractere correspondente é o início
caracter da string de entrada e o segundo tipo é Dólar $
que verifica se o caractere correspondente
caracter é o último caracter da string de entrada.
2.8.1 Caret
Caret ^
símbolo é usado para verificar se o caractere correspondente é o primeiro caractere
da string de entrada. Se aplicarmos a seguinte expressão regular ^a
(se a for
o símbolo inicial) à cadeia de caracteres de entrada abc
corresponde a a
. Mas se aplicarmos a expressão regular ^b
na string de entrada acima, ela não corresponde a nada. Porque na string de entrada abc
b
não é o símbolo de partida. Vamos dar uma olhada em outra expressão regular ^(T|t)he
que significa: caractere maiúsculo T
ou caractere minúsculo t
é o símbolo inicial da string de entrada, seguido por
caractere minúsculo h
, seguido por caractere minúsculo e
.
(T|t)he => The car is parked in the garage.
Teste a expressão regular
^(T|t)he => The car is parked in the garage.
Teste a expressão regular
2.8.2 Dollar
Dólar $
símbolo é usado para verificar se o caractere correspondente é o último caractere
da cadeia de entrada. Por exemplo, expressão regular (at\.)$
significa: um caractere minúsculo a
, seguido por um caractere minúsculo t
, seguido por um caractere .
e o correspondente deve ser o fim da string.
(at\.) => The fat cat. sat. on the mat.
Teste a expressão regular
(at\.)$ => The fat cat. sat. on the mat.
Teste a expressão regular
Conjuntos de caracteres de corda
Expressão regular fornece abreviaturas para os conjuntos de caracteres comumente usados, que oferecem abreviaturas convenientes para expressões regulares comumente usadas. Os conjuntos de caracteres abreviados são os seguintes:
Lookaround
Lookbehind e lookahead (também chamados de lookaround) são tipos específicos de grupos de
non-capturing (usados para combinar com o padrão, mas não incluídos na lista de correspondência). Lookaheads são usados quando temos a condição de que este padrão seja precedido ou seguido por outro determinado padrão. Por exemplo, queremos obter todos os números que são precedidos por $
caracteres da seguinte cadeia de entrada .44 and .88
. Usaremos a seguinte expressão regular (?<=$)*
que significa: obter todos os números que contenham caracteres . e que sejam precedidos por caracteres $
. A seguir são apresentados os olhares que são usados nas expressões regulares:
4.1 Positive Lookahead
O lookahead positivo afirma que a primeira parte da expressão deve ser
seguida pela expressão lookahead. A correspondência retornada contém apenas o texto que é correspondido pela primeira parte da expressão. Para definir um positivo
lookahead, são usados parênteses. Dentro desses parênteses, um ponto de interrogação com sinal igual é usado desta forma: (?=…)
. A expressão Lookahead é escrita após o sinal de igual dentro dos parênteses. Por exemplo, a expressão regular(T|t)he(?=\sfat)
significa: opcionalmente combine letra minúscula t
ou letra maiúscula T
, seguida pela letra h
, seguida pela letra e
. Entre parênteses definimos lookahead positivo que diz ao motor de expressão regular para combinar The
ou the
que são seguidos pela palavra fat
.
(T|t)he(?=\sfat) => The fat cat sat on the mat.
Teste a expressão regular
4.2 Lookahead negativo
Negativo lookahead é usado quando precisamos obter todas as combinações da string de entrada
que não são seguidas por um padrão. Lookahead negativo é definido da mesma forma que definimos lookahead positivo, mas a única diferença é ao invés de igual =
caractere que usamos negação !
caractere, ou seja (?!…)
. Vamos dar uma olhada na seguinte expressão regular (T|t)he(?!\sfat)
o que significa: obter todas The
ou the
palavras da string de entrada que não são seguidas pela palavra fat
precede por um caractere de espaço.
(T|t)he(?!\sfat) => The fat cat sat on the mat.
Teste a expressão regular
4.3 Positive Lookbehind
Positive lookbehind é usado para obter todas as correspondências que são precedidas por um padrão específico
. O lookbehind positivo é indicado por (?<=…)
. Por exemplo, a expressão regular (?<=(T|t)he\s)(fat|mat)
significa: obter todas fat
ou mat
palavras da cadeia de entrada que estão após a palavra The
ou the
.
(?<=(T|t)he\s)(fat|mat) => The fat cat sat on the mat.
Testar a expressão regular
4.4 Lookbehind negativo
Negativo é usado para obter todas as correspondências que não são precedidas por um padrão
específico. O lookbehind negativo é denotado por (?<!…)
. Por exemplo, a expressão regular (?<!(T|t)he\s)(cat)
significa: obter todas cat
palavras da string de entrada que não estão depois da palavra The
ou the
.
(?<!(T|t)he\s)(cat) => The cat sat on cat.
Testar a expressão regular
Flags
Flags também são chamados modificadores porque modificam a saída de uma expressão regular
expressão. Estas bandeiras podem ser usadas em qualquer ordem ou combinação, e são uma parte integral da RegExp.
>
5.1 Case Insensitive
O modificador i
é usado para realizar a correspondência não sensível a maiúsculas e minúsculas. Por exemplo, a expressão regular /The/gi
significa: letra maiúscula T
, seguida de caractere minúsculo h
, seguida de caractere e
. E no final da expressão regular a bandeira i
diz ao motor de expressão regular para ignorar o caso. Como você pode ver também fornecemos g
flag porque queremos procurar o padrão em toda a string de entrada.
The => The fat cat sat on the mat.
Testar a expressão regular
/The/gi => The fat cat sat on the mat.
Testar a expressão regular
5.2 Procura global
O modificador g
é usado para realizar uma correspondência global (encontrar todas as correspondências ao invés de parar após a primeira correspondência). Por exemplo, a expressão regular /.(at)/g
significa: qualquer caractere exceto nova linha, seguido por caractere minúsculo a
, seguido por caractere minúsculo t
. Como fornecemos g
flag no final da expressão regular agora ele encontrará todas as correspondências na string de entrada, não apenas a primeira (que é o comportamento padrão).
/.(at)/ => The fat cat sat on the mat.
Testar a expressão regular
/.(at)/g => The fat cat sat on the mat.
Testar a expressão regular
5.3 Multilinha
O modificador m
é usado para executar uma correspondência de múltiplas linhas. Como discutimos anteriormente
anchors (^, $)
são usados para verificar se o padrão é o início da entrada ou o fim da string de entrada. Mas se quisermos que as âncoras funcionem em cada linha usamosm
flag. Por exemplo, a expressão regular /at(.)?$/gm
significa: lowercase
caracter a
, seguido pelo caractere de lowercase t, opcionalmente qualquer coisa exceto
new line. E por causa de m
flag agora o motor de expressão regular combina padrão no final de cada linha em uma string.
/.at(.)?$/ => The fat
cat sat
on the mat.
Teste a expressão regular
"/.at(.)?$/gm" => The fat
cat sat
on the mat.
Teste a expressão regular
Casamento ganancioso vs preguiçoso
Por padrão o regex fará o matching ganancioso , significa que ele irá combinar desde que
possível. Podemos usar ?
para combinar de forma preguiçosa significa o mais curto possível
/(.*at)/ => The fat cat sat on the mat.
Testar a expressão regular
/(.*?at)/ => The fat cat sat on the mat.
Testar a expressão regular
E com isso, este post chega ao fim. Espero que este post tenha sido útil. Certifique-se de praticar o que você aprendeu usando serviços como regexr.com ou regex101.com.