Regex para selecionar apenas um número específico de espaços

2

Estou usando o notepad ++ e quero fazer um find & substitua a operação.
Por exemplo

  • 4 número de espaços significa 1 separador
  • 6 número de espaços significa 2 guias etc.

No meu arquivo, todos os espaços estão no começo de cada linha.

Qual é o regex que devo usar para encontrar o número exato de espaços?
Eu quero substituir os espaços com guias (como guias simples ou duplas com base em 4 espaços ou 6 espaços)

Observação: o arquivo é um arquivo de classificação que explica que 4 espaços são pai e 6 espaços são filhos e 8 espaços são filhos de crianças.

uma amostra do arquivo:

Agriculture, forestry and fishing
 Crop and animal production, hunting and related service activities
   Growing of non perennial crops
     Growing of cereals (except rice), leguminous crops and oil seeds
     Growing of rice
     Growing of vegetables and melons, roots and tubers
    
por Ahmed AbuRa'ed 29.03.2015 / 11:46

2 respostas

3

A sintaxe para regex para descobrir o número de espaços no começo de uma linha é

 ^(space_character){number_of_spaces_to_be_found}
.
Por exemplo, a regex a seguir encontrará 4 espaços
 ^ {4}
.
Na caixa de substituição, use
"\t"
para substituir sua localização por uma guia.
Para duas guias, use
"\t\t"
.     
por 29.03.2015 / 12:16
0

Talvez o padrão a seguir faça o que você deseja (os colchetes angulares envolvem os padrões):

Quatro espaços principais se tornam uma guia

Find: <^ {4}([^ ].*)$>
Replace: <\t>

Seis espaços iniciais se tornam duas guias

Find: <^ {6}([^ ].*)$>
Replace <\t\t>

Explicação

  • Como observado em outras respostas, ^ corresponde ao início de uma linha.
  • Também conforme observado, a notação de colchetes {#} especifica uma correspondência para um número específico de repetições.
  • O seguinte conteúdo entre colchetes, [^ ] , é uma classe de caractere que corresponde a um único caractere que não é um espaço (os colchetes definem a classe de caractere; o primeiro ^ indica para inverter a classe).
  • .*$ corresponde a qualquer número de qualquer tipo de caractere (possivelmente incluindo novas linhas, dependendo de como o mecanismo do Regex está configurado) até o final da linha.
  • Os parênteses em torno de ([^ ].*) indicam um grupo definido dentro do padrão, que é (esperançosamente, dependendo do mecanismo Regex no Notepad ++) recuperado na expressão Substituir por .
por 29.03.2015 / 13:42