Sempre que possível, comece sua ER com o circunflexo. Como já vimos, o robozinho vai tentando casá-la, caractere por caractere, da esquerda para a direita, a partir do começo da linha. Então, o ponto inicial de pesquisa, é o começo de linha.
Se você não coloca o circunflexo em sua ER, o robozinho tentará casá-la em qualquer parte da linha. Isso significa ir varrendo a linha, um por um, até chegar no final e caso não encontre o padrão, retorna falha na pesquisa.
Se você coloca o circunflexo na sua ER, forçando o casamento do começo de linha, se o primeiro componente da ER após o ^
já não casar com o primeiro caractere da linha, dali mesmo já retorna falha de pesquisa, sem precisar varrer o resto da linha.
Por exemplo, se você procura valores em reais "R$", pode simplesmente dizer R\$
. Mas se você sabe que os reais que lhe interessam estão sempre no começo da linha, digam isso com sua ER: ^R\$
. Assim, em um exemplo como:
R$ 200,00 : fósforos e velas essenciais na crise de energia. comprados das marcas mais baratas. R$ 100,00 : caixas de ovos vazias
Ambas as ERs casam as linhas 1 e 4 imediatamente, pois têm o R$ já no começo. Mas nas linhas 2 e 3, onde não há nossos reais desejados, a primeira ER seria tentada em ambas, em todas as posições, até o final, para ver que falhou. Já a segunda, ao encontrar um espaço em branco no começo da linha, já retorna falha, pois ele não é um R
.
Em um exemplo mais palpável, suponha que seu chefe tenha uma mesa enorme, com oito gavetas. E se ele lhe falar: "Me traga a pasta verde, está na minha gaveta", ou então "Me traga a pasta verde, que está na última gaveta. Na última hein? Não fuce no resto de minhas coisas!". Tem uma diferença, não? &:)