A expressão Regex corta zero no final

2

Eu tenho um script com o regex powershell nele, e depois de atualizar do Windows 7 para o 10, ele funciona de maneira diferente.

Regex:

if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$'){$srv = "192.168.$srv"}

Esperado:

Let's say that $srv="1.0"
result: 192.168.1.0

Depois de atualizá-lo para o Windows 10, ele acaba com o zero no final.

Now result will be: 192.168.1
BUT! if $srv="1.01", the result will be 192.168.1.01

Pesquisei a diferença de expressão entre as versões do PowerShell, mas não encontrei nada. Por favor ajude:)

    
por igor 03.08.2015 / 10:18

1 resposta

0

Você diz a saída de

$srv = "1.0"; if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$') {"192.168.$srv"}

é 192.168.1.0

E se eu entendi corretamente, quando você usa

$srv = $args[0]; if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$') {"192.168.$srv"}

E passe 1.0 como argumento, a saída é 192.168.1

A única maneira de isso ser possível é se o seu script estiver exibindo isso em algum outro lugar . Como não pode ser proveniente desta declaração if .

Você pode fazer as seguintes alterações no seu script e nos mostrar a saída:

$srv = $args[0];
"srv = $srv";
if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$') {"Inside IF: 192.168.$srv"}

Obrigado

    
por 07.11.2016 / 12:06