Resposta
Vá para a caixa de diálogo " Substituir " do Notepad ++ (Ctrl + h) ou menu Search -> Replace... e selecione as seguintes opções:
- Modo de pesquisa , selecione o botão de opção " Expressão regular ".
- Modo de pesquisa , selecione ". corresponde à nova linha "
Use o seguinte para " Encontrar ":
(\.\w*)[[:blank:]]*\{.*?(margin:[\w[:blank:][:punct:]]*).*?\}
E para " Substituir por ", use algo assim (apenas os $ 1 e $ 2 são importantes):
$1 : $2
Explicação
Quebrando a string Find em seus componentes, da esquerda para a direita, temos:
-
(\.\w*): Primeiro, precisamos encontrar o nome do bloco. Então, comece com literalmente um "." (\.), seguido por alguns caracteres alfanuméricos / sublinhados (\w*). Colocá-los entre parênteses torna-os no grupo a, neste caso, o primeiro grupo$1. -
[[:blank:]]*\{.*?: Após o nome do bloco, pode haver alguns espaços ([[:blank:]]*) seguidos de um colchete de abertura (\{- escapado com "\" porque os colchetes têm significado especial em regex) . Finalmente, combinamos QUALQUER COISA (.*), incluindo novas linhas, mas o mínimo possível (daí?), para colocar tudo dentro do bloco até a próxima parte (ou seja, "margem"). Note, nenhuma parte disso está agrupada, porque estamos efetivamente jogando fora. -
(margin:[\w[:blank:][:punct:]]*): A próxima parte de interesse é a "margem" e seu valor. Portanto, isso é agrupado e se tornará$2. Primeiro, combinamos literalmentemargin:, então seu valor, que será uma cadeia de alfanuméricos / sublinhados, pontuações e espaços (mas não novas linhas como caracteres). O motivo do complexo[\w[:blank:][:punct:]]*em oposição a algo como.*?é porque um.corresponderia a qualquer caractere, incluindo novas linhas e qualquer coisa depois da linha de margem que possa existir, até o colchete de fechamento. -
.*?\}: Finalmente, combinamos tudo o que resta no bloco (neste caso, é apenas a nova linha no final da linha "margin") e a chave de fechamento. Mais uma vez, para ser descartado.