O padrão no comando substituto é: [:;]\([^:;]*\)\([:;].*\)[;:]
. Observe o no final. Isso significa que qualquer texto corresponde ao primeiro grupo,
\([^:;]*\)
também deve ocorrer no final do padrão.
Seu espaço de padrão é inicialmente 0000:1111:2222:3333:4444:1111:2222:3333:0000
. O padrão corresponde a :1111:2222:3333:4444:1111
e 1111
corresponde ao primeiro grupo e também a no final.
Após a primeira rodada de substituições, o espaço padrão foi alterado para 0000:1111:2222:3333:4444:2222:3333:0000
. Agora, se o 1111
no espaço de padrão for usado para corresponder a \([^:;]*\)
, não haverá 1111
para corresponder a . Assim, o padrão não corresponde e o mecanismo de regex tenta outra coisa. Nesse caso, usando a próxima correspondência disponível para o primeiro grupo,
2222
, funciona.