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.