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.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

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

Okay