Notepad ++ - procure as mesmas coisas que estão na fila duas vezes

3

Eu gostaria de saber se existe uma maneira de pesquisar arquivos por duas coisas na mesma linha. Por exemplo, se eu quiser pesquisar linha com "variável >=" e "variável >=". O problema é que eu não sei o que "variável" é (bem, há um monte de variáveis diferentes no arquivo e estou procurando por verificação de variáveis duplicadas em uma linha).

Alguém pode me ajudar com isso?

    
por liledition 05.07.2016 / 13:27

2 respostas

1

Você tem algumas opções ...

De qualquer forma, antes de começar:

  • abra a caixa de diálogo "Localizar" (Ctrl + f) ou "Substituir" (se souber o que deseja fazer em seguida),
  • selecione o botão de opção "Expressão regular" na parte inferior esquerda da caixa de diálogo.
  • Aqui, presumo que você esteja procurando por duplicatas de padrões como variable >= something ou hour >= NUM .
  • Além disso, vou agrupar o máximo possível, para que posteriormente você possa substituir mantendo ou descartando qualquer parte conforme necessário.

(1) Encontrar explícito

Você conhece as duplicatas e pode encontrá-las explicitamente, por exemplo:

((variable)\s*>=\s*\S+)(.*)(\s*>=\s*\S+)

Ou, para "hora", basta substituir a palavra "variável" pela palavra "hora":

((hour)\s*>=\s*\S+)(.*)(\s*>=\s*\S+)

Explicação:

Cada conjunto de colchetes, da esquerda para a direita, é um grupo. Portanto, você terá o seguinte:

Grupo 1 : ((variable)\s*>=\s*\S+) : encontra uma cadeia que começa com "variável", seguida por \s (espaço) e * significa qualquer número de espaços (portanto, você pode ter "variável >=" ou "variável >="), os caracteres >= então mais \s* (qualquer espaço), então finalmente qualquer caractere NÃO-espaço \S+ (o + diz que deve haver pelo menos um).

Grupo 2 : (variable) : o Grupo 2 está no grupo 1 e é apenas uma maneira de extrair o nome "variável".

Grupo 3 : (.*) : qualquer coisa entre as duas duplicatas que você encontrará. Isso permite que você faça algo com este texto extra, se existir.
ATENÇÃO, se houver triplicatas (ou mais), isso consumirá os padrões no meio, fazendo com que group1 e group4 contenham APENAS as primeiras e últimas duplicatas. Se você quiser encontrar duplicatas consecutivas, altere essa parte para (.*?) ; o ? torna não-ganancioso, ou seja, encontrará o mínimo . (qualquer coisa).

Grupo 4 : (\s*>=\s*\S+) : Finalmente, esta é a duplicata. A razão pela qual é uma duplicata, é porque o padrão é o mesmo que o grupo 1, exceto que usa , que é apenas uma maneira de dizer o que quer que esteja no grupo 2. Nesse caso, é a palavra "variável". / p>

O segundo padrão para "hora", como você verá, é idêntico, exceto que ele procura por "hora" em vez de "variável".

(2) Encontre Padrões Duplicados Desconhecidos

Com uma pequena modificação, você pode procurar por quaisquer duplicatas do mesmo padrão:

((\w+)\s*>=\s*\S+)(.*)(\s*>=\s*\S+)

Explicação:

Isso é idêntico a encontrar duplicatas com nomes explicitamente conhecidos. A diferença aqui é o uso de \w+ (qualquer palavra alfanumérica), em vez de uma palavra como "variável" / "hora".

\w+ : \w corresponde a qualquer caractere de palavra (incluindo letras maiúsculas, minúsculas e números, mas não pontuação ou outros símbolos). O + é novamente uma maneira de dizer pelo menos um. Portanto, com \w+ , você encontrará qualquer palavra alfanumérica.

    
por 05.07.2016 / 14:44
0
  1. Abra a caixa de diálogo Localizar ...
  2. Defina "Modo de pesquisa" para "Expressão regular"
  3. Desmarque ". corresponde à nova linha"
  4. Pesquisar por: variable\s*?>=.*?variable\s*?>=
por 05.07.2016 / 13:45