Âncoras
"Âncora" é o nome que damos para os caracteres ^
e $
. ^
significa o início da linha e $
significa o fim da linha.
Então se eu tiver a seguinte regex
^[Tt]este
e aplicá-la ao seguinte texto
Teste unitário é um tipo de teste que visa testar
apenas uma unidade de código, como um fluxo determinado de
uma função.
A regex vai dar match apenas no primeiro Teste
porque ele está no início da linha, representado pelo ^
. A mesma coisa acontece com $
.
A regex
nunca$
aplicada no texto
Lembre-se, nunca diga nunca
vai dar match somente no segundo nunca
.
Limites de palavras
Limites de palavras
é o nome que damos ao caracter especial \b
. Ele serve para darmos match no início ou no final de uma palavra.
A regex
\bvel
aplicado sobre o texto
O vel da noiva é invisível
vai dar match apenas na palavra vel
, porque \b
dá o match no limite da palavra.
Em contrapartida, o caracter \B
vai dar match em posições que \b
não dá match.
\Bvel
aplicado sobre o texto
O vel da noiva é invisível
dá match no vel
de invisível
.
Mas como a engine sabe que a palavra acabou? Como ela decide o final da palavra anti-herói
? \b
dá match no que \w
não dá. \w
é chamado de word character
. Ele dá match em "caracteres de palavras", então as letras do alfabeto, algarismos e underline (_
). Algumas implementações, ou flavors, de regex suportam Unicode por padrão, como a engine do Python. Nas que não suportam, o ó
de herói
não será reconhecido como \w
se não for colocada uma flag, que na maioria dos flavors é u
. Falaremos sobre flags mais pra frente.
No entanto, nenhuma engine de regex dá match no hífen (-
). Então se você quiser que a sua engine dê match em anti-herói
, você precisará da seguinte regex
/[\w-]+/u
Assim você engloba tanto todos os caracteres representados por \w
e o hífen.
Notem que eu coloquei duas barras (/
), uma no começo e uma no final da regex. Esses são os separadores e indicam quando a regex começa e termina. Esses separadores não foram incluídos antes porque não eram necessários para a explicação, mas por conta da flag u
, foi preciso incluí-los. Novamente, falaremos sobre flags mais pra frente.
Conclusão
Nessa parte foi a primeira vez que eu falei de flavors de regex. É importante falar sobre isso porque o que a gente chama de regex é na verdade uma especificação. Cada linguagem ou plataforma implementa de uma maneira diferente essa especificação, então agora é a primeira vez que digo uma das regras da regex, que eu mesmo formulei.
Regra 3: conheça muito bem sua engine de regex
Até a próxima.
Top comments (0)