Regex para string contém?


114

Qual é a regex para simplesmente verificar se uma string contém uma determinada palavra (por exemplo, 'Teste')? Eu fiz algumas pesquisas no Google, mas não consigo obter um exemplo direto de tal regex. Isso é para um script de construção, mas não tem relação com nenhuma linguagem de programação específica.

Respostas:


78

Assumindo sabores regulares de regex de estilo PCRE:

Se você quiser verificá-la como uma palavra única e completa , é \bTest\b, com sinalizadores apropriados para não diferenciação de maiúsculas e minúsculas, se desejado, e delimitadores para sua linguagem de programação.\brepresenta um "limite de palavra", ou seja, um ponto entre os caracteres onde uma palavra pode ser considerada o início ou o fim. Por exemplo, como os espaços são usados ​​para separar palavras, haverá um limite de palavra em ambos os lados de um espaço.

Se você quiser verificá-lo como parte da palavra , é apenas Test, novamente, com sinalizadores apropriados para não diferenciação de maiúsculas e minúsculas. Observe que, normalmente, os métodos de "substring" dedicados tendem a ser mais rápidos nesse caso, porque remove a sobrecarga de analisar a regex.


1
" \brepresenta um" limite de palavra ", ou seja, algo que separa duas palavras (por exemplo, um espaço)." \bnão corresponde a um espaço; é uma afirmação que corresponde entre caracteres (ou no início ou no final de uma linha, na maioria dos casos).
strager de

1
@strager: Sim, você está certo - minha explicação foi um pouco imprecisa. Eu vou editar.
Michael Madsen

117

Apenas não ancore seu padrão:

/Test/

O regex acima verificará se a string literal "Teste" foi encontrada em algum lugar dentro dele.


2
Obrigado, não sabia que era tão simples! Definitivamente, não vi isso no meu Google. O que você quer dizer com não ancorar meu padrão?
GurdeepS de

7
Você pode ancorar um padrão para corresponder ao início ou ao final de uma string, por exemplo, / ^ Test / ou / Test $ / respectivamente ou mesmo / ^ Test $ / para corresponder exatamente. O exemplo é estúpido porque não fornece nenhum benefício sobre a comparação de igualdade, mas, por exemplo, ao fazer a validação de campo de formulário, uma regex como / ^ \ d + $ / só corresponderá se o campo contiver pelo menos um dígito e nada além de dígitos numéricos.
David Clarke

-13

Estou alguns anos atrasado, mas por que não isso?

[Tt][Ee][Ss][Tt]

4
Essa resposta apareceu na fila de revisão de baixa qualidade, provavelmente porque você não explicou o código. Se você explicar (em sua resposta), é muito mais provável que obtenha mais votos positivos - e o questionador realmente aprende algo!
O cara com o chapéu

6
Isso não é muito generalizável - imagine se a palavra que você teve que pesquisar viesse de um usuário. Você teria que gerar o [Aa]padrão para cada letra e isso ficaria muito feio muito rápido.
Platinum Azure
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.