Estou usando o Notepad ++ e estou tentando encontrar uma maneira de pesquisar vários valores na mesma linha. A pesquisa regex não está funcionando para mim no momento, pois posso não saber em que ordem os valores estão.
Por exemplo, desejo pesquisar uma linha de código que tenha três valores específicos. O uso .*
na pesquisa regex não está funcionando, pois você deve saber a ordem dos valores. É possível eu buscar essas linhas sem saber a ordem dos valores?
Em cada linha, talvez eu tenha um log de negociação com 30 tags diferentes. Eu quero pesquisar 35=D, EUR/USD, 150=8
. Eu só quero procurar entradas com todos os três valores presentes.
O problema que encontro é que a ordem dessas tags não é garantida; portanto, a pesquisa regex que uso abaixo nem sempre encontra cada entrada necessária.
35=D.*EUR/USD.*150=8
O uso de lookahead é muito mais eficiente e pode lidar com qualquer número de alternâncias sem aumentar a complexidade:
^(?=.*\b35=D\b)(?=.*\bEUR/USD\b)(?=.*\b150=8\b).+$
.
corresponde à nova linha"Explicação:
Captura de tela:
Para corresponder apenas as linhas onde existem todas as três strings, você pode usar o
|
operador alternativo e agrupar(...)
seus padrões para criar um regex para todas as permutações possíveis:Uma versão legível com quebras de linha adicionadas:
Isso corresponderia a todas as linhas em que uma combinação de
35=D
,EUR/USD
e150=8
(e possível texto intermediário) está presente. Neste exemplo de texto, apenas as últimas três linhas teriam uma correspondência (botão "Find All in Current Document"):