[PowerShell] Regex Replace

Umlüx

Lt. Junior Grade
Registriert
Apr. 2006
Beiträge
433
folgendes problem: ich will einen string nach allen vorkommen eines suchpatterns durchsuchen und die vorkommen verändert zurückschreiben. leider steh ich grade gewaltig auf der leitung und komm nicht weiter..

betroffener code ausschnitt:
Code:
$string = "blafasel/foo/CCCA1234567890123456/6660+/foobar/HURRZ/CCVI6543210987654321/0815+/blubb"

$replace = $string -replace '([C]{2})([A-Z]{2})(\d{4})(\d.*)(\d{4})/','$1$2$3XXXXXXXX$5/'

Write-Host $string " -> " $replace

was ich erwarte:
Code:
blafasel/foo/CCCA1234XXXXXXXX3456/6660+/foobar/HURRZ/CCVI6543XXXXXXXX4321/0815+/blubb

ich bekomme:
Code:
blafasel/foo/CCCA1234XXXXXXXX4321/0815+/blubb

das ist jetzt vermutlich nur eine kleinigkeit wo ich später den kopf über den händen zusammenschlage.. aber momentan bin ich betriebsblind was ich falsch mache?

danke!
 
.* arbeitet standardmäßig greedy. Wenn es das nicht tun soll, musst du .*? draus machen.
Code:
> $string -replace '([C]{2})([A-Z]{2})(\d{4})(\d.*?)(\d{4})/','$1$2$3XXXXXXXX$5/'
blafasel/foo/CCCA1234XXXXXXXX3456/6660+/foobar/HURRZ/CCVI6543XXXXXXXX4321/0815+/blubb
 
Zurück
Oben