O Regex é mais poderoso que o String.contains , já que você pode impor o limite de palavras nas palavras-chave (entre outras coisas). Isso significa que você pode pesquisar as palavras-chave como palavras , em vez de apenas substrings .
O regex RAW (remova o escape feito na string literal – isso é o que você obtém quando imprime a string acima):
O \b verifica o limite de palavras, para que você não obtenha uma correspondência para restores store products . Observe que as stores 3store_product também são rejeitadas, já que digit e _ são consideradas parte de uma palavra, mas duvido que esse caso apareça em texto natural.
Como o limite de palavras é verificado para ambos os lados, o regex acima procurará palavras exatas. Em outras palavras, o stores stores product não corresponderá à regex acima, desde que você esteja procurando pela palavra store sem s .
. normalmente corresponde a qualquer caractere, exceto um número de novos caracteres de linha . (?s) no começo faz . corresponde a qualquer personagem sem exceção (graças a Tim Pietzcker por apontar isto).