DEV Community

Patrícia Villela for Feministech

Posted on

9 5

Expressões Regulares III - âncoras, limites de palavras e caracteres de palavras

Â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.
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay