Q:

Why is -replace not working as expected?

In PowerShell I have the code 
";10000;100;.0000" -replace ";.0000",";0.00"

and the result is : ";0.00;100;0.00"
How is that possible?

A:

-replace uses regex. So that comes into play since you are looking for ;.0000 which has the regex special character . which matches any character. That is why there is a match at the beginning.
If you escape that period it is treated literally and you will get the expected results.
PS C:\Users\Matt> ";10000;100;.0000" -replace ";.0000",";0.00"
;0.00;100;0.00

PS C:\Users\Matt> ";10000;100;.0000" -replace ";\.0000",";0.00"
;10000;100;0.00

You can look at your example with a little more explanation at regex101.

; matches the character ; literally
. matches any character (except newline)
0000 matches the characters 0000 literally

The above is taken from the linked resource.
So you either need to be aware of regex control characters (which is not a tough thing to get into) or if you are just doing basic search/replace you can also use the .Replace() string method which does not use regex.
PS C:\Users\Matt> ";10000;100;.0000".replace(";.0000",";0.00")
;10000;100;0.00

