Tenho uma pesquisa no aplicativo e uso regex para destacar correspondências encontradas. Mas percebo que às vezes elas correspondem de forma meio incorreta (?).
Por exemplo, a regex ( sem distinção entre maiúsculas e minúsculas ): (the).*(te)
. E o resultado para a frase de teste será (testado aqui ):
Edite a Expressão e o Texto para ver as correspondências. Passe o mouse sobre as correspondências ou a expressão para obter detalhes. Os sabores PCRE e JavaScript do RegEx são suportados. Valide sua expressão com o modo Tests.
Se você der uma olhada na frase de teste, ela contém muitas te
partes antes da última. Parece que está procurando do fim da linha. Mas eu imagino que deva ser assim:
Edite a Expressão e o Texto para ver as correspondências. Passe o mouse sobre as correspondências ou a expressão para obter detalhes. Os sabores PCRE e JavaScript do RegEx são suportados. Valide sua expressão com o modo Testes.
Preciso que ele encontre a primeira ocorrência. Como no aplicativo é a consulta inserida pelo usuário, não sei exatamente qual será o regex. Mas ele tem um padrão: (word1).*(word2).*(word3)
.
O que estou fazendo errado? O regex não está correto ou é só uma maneira de funcionar?
Mude o quantificador ganancioso
.*
para o quantificador relutante.*?
:Observe também que você não precisa dos colchetes de agrupamento.
Veja a demonstração ao vivo .