
Eu fiz um regex de localização de várias linhas usando o Notepad ++. A linha começa com INFO e termina com um padrão de dígito conhecido. Quando clico em localizar depois de digitar meu regex, obtenho os resultados corretos destacados na janela principal.
Para meu caso de uso, quero find all in open documents
usar esse mesmo regex. O problema é que quando faço isso, a janela de resultados da localização mostra apenas a primeira linha da correspondência multilinha. Para ser realmente útil, preciso que a correspondência inteira (que no meu caso seja duas linhas quase o tempo todo) seja exibida na janela de resultados da pesquisa. Desejo pegar a saída da tela de localização de resultados e usá-la como entrada para outro processo que está além do escopo desta questão.
Então, como faço para exibir toda a correspondência de várias linhas. Posso pensar em como fazer isso como um programa em uma linguagem de script ou programação, mas como posso fazer isso no Notepad++?
Responder1
Resposta negativa: Embora seja possível pesquisar e selecionar várias linhas em vários arquivos definindo a opção regex ".corresponde à nova linha", o painel Encontrar Resultados listará apenas a primeira linha por resultado encontrado.
Esse comportamento está integrado ao Notepad++ e não pode ser alterado. Também examinei os plug-ins listados e nenhum deles pode alterá-los.
Você pode solicitar isso como uma solicitação de recurso no Comunidade Bloco de Notas++, mas não consigo ver nenhuma solução imediata para o seu problema.
Responder2
Tente o seguinte. Digamos que seu documento comece com a palavra INFO e termine com 999.
Sua regex seria:
INFO.+?999
Para que isso funcione comMULTI LINHAS, na janela de pesquisa, ao lado da marca para usarExpressão regular, há uma caixa de seleção que diz. corresponde à nova linha. Você precisa selecioná-lo para que funcione.
ps Verifiquei que funciona no meu Notepad++ versão 7.5.1
ps2 O find retorna apenas a 1ª linha de cada ocorrência. Portanto, se a sua correspondência começar na linha 5, mas terminar na linha 10, ela exibirá na janela de pesquisa que começa na linha 5. Você não pode alterar esse comportamento no aplicativo.
Responder3
Consegui resolver em duas etapas: primeira etapa:
- combinar multilinha
- substitua-o por algummarcae mantenha as informações úteis na segunda etapa:
- "encontrar no documento" = procure por linhas marcadas [insira a descrição da imagem aqui][1]
[1]: veja amostra de trabalhohttps://i.stack.imgur.com/ClQjU.png
Responder4
Existe umhackeadomaneira de conseguir isso.
- Na caixa de diálogo localizar, vá para a guia de marca.
- Clique em Marcar tudo
- Agora clique em Copiar texto marcado
- Abra uma nova guia e cole o texto copiado
Agora você terá todas as linhas de cada correspondência de resultado da pesquisa exibidas, só que não estará na Search results
janela. Outra desvantagem é que isso funcionará apenas no documento atual; sua exigência Find All in All Opened Documents
não será atendida.
O gif a seguir mostra a execução dessas etapas em um registro do zookeeper (link).