Expressão regular para selecionar apenas a linha que contém duas palavras pesquisadas?

0

Eu não sou muito avançado com a expressão regular, então não tenho certeza de como fazer isso. Vamos dizer que eu tenho um arquivo de texto que contém mais de 1000 linhas de dados. Eu quero procurar as palavras 'comando' e 'achar'. Eles ocorrem em muitos lugares ao longo de todo o documento, mas somente na linha 100 eles ocorrem na mesma linha, por exemplo: The linux command to search files and folders is find. Vamos dizer que eu não sei a ordem dessas duas palavras, onde elas estão colocadas, dentro da linha.

É possível, usando expressão regular, selecionar diretamente esta linha, ao procurar por 'command' e 'find', e ignorar outras linhas onde as palavras só ocorrem uma vez?

    
por peter7558 28.02.2016 / 14:19

2 respostas

2

Tente ^.*(command|find).*$ no texto sublime (como tentei isso no ST3, no Windows 10).
Minha resposta é baseada na resposta no estouro de pilha.

EDIT: O RE acima permite "command" OU "find" não insistindo em AMBOS. Por outro lado, permite que expressões desnecessárias como "commander", "finding" ou "viewfinder" estejam no resultado.

(\<command\>.*\<find\>)|(\<find\>.*\<command\>)

elimina esses falsos hits. Observe o \ < e > seqüências que significam o começo e o fim de uma palavra.

    
por 28.02.2016 / 14:44
1

Em vim , você pode usar .*\<command\>\&.*\<find\> . Como indicado por Gombai Sándor, \<…\> delimita palavras, então, se você quer apenas procurar pelas strings "command" e "find" (mesmo que ocorram como parte de palavras maiores, por exemplo, "comandante") você pode deixar de fora o \< e \> .

Referência: consulta de pesquisa gvim para & & Condições OR .

Nota: isso tem a menor desvantagem de deixar o cursor no começo da linha (que contém as duas palavras) e não em qualquer uma das palavras pesquisadas (a menos que apareça no começo da linha).

    
por 28.02.2016 / 21:10

Tags