Digamos que eu tenha uma string assim:
foo
}
bar}
}
{baz}
e quero apenas corresponder as chaves de fechamento que estão no início de uma linha ou são precedidas por um espaço em branco, como um ou mais tab
caracteres.
Portanto, com o exemplo acima, apenas as chaves nas linhas 2 e 4 devem ser selecionadas (contando a partir de 1)
Esta primeira tentativa parece apenas destacar, a chave de fechamento na linha 2, a chave na linha 4 não está selecionada:
"foo
}
bar}
}
{baz}" |Select-String "\n\s?\}" -AllMatches
Tentei tornar o token de espaço em branco opcional com ?
, mas a chave na linha 2 foi desmarcada:
"foo
}
bar}
}
{baz}" |Select-String "\n\s+?\}" -AllMatches
hmm...Tenho certeza de que já teria conseguido -replace
ou -match
agora, mas realmente preciso pegar o jeito Select-String
.
Use a opção inline
(?m)
para fazer^
(e$
) corresponder ao início (e ao fim) de cada linha .Use
[ \t]*
para corresponder a qualquer sequência de zero ou mais (*
) espaços ou tabulações ([ \t]
)\s*
, para corresponder a todos os caracteres de espaço em branco ., potencialmente corresponderia entre linhas , visto que as novas linhas também são espaços em branco.