2016-10-17 5 views
2

Ich habe einige Probleme mit regulären Ausdruck hauptsächlich, weil ich denke, die Informationen, die ich finden kann, ist nicht speziell für Powershell und alle Proben habe ich entweder Fehler versucht oder nicht funktionieren wie beabsichtigt. Ich versuche, das erste Vorkommen eines Wortes in einer Zeichenfolge durch ein anderes Wort zu ersetzen, aber kein anderes Vorkommen dieses Wortes zu ersetzen. für ein Beispiel nehmen Sie die Zeichenfolge:Ersetzen nur das erste Auftreten eines Wortes in einer Zeichenfolge

My name is Bob, her name is Sara.

Ich mag würde das erste Vorkommen von name mit baby so die resultierende Zeichenfolge

wäre

in https://regex101.com/-My baby is Bob, her name is Sara.

Ich habe gearbeitet, ersetzen versuche zu bauen und zu sehen, was ausgewählt ist, wie ich gehe, aber wie gesagt, keiner von ihnen haben eine Powershell-Geschmack von Regex. Da kann ich einfach das global Flag ausschalten und es scheint das erste Vorkommen auszuwählen, aber nicht in Powershell. So bin ich wirklich ratlos, wo alle wirklich an diesem Punkt haben zu beginnen ist die Auswahl alle Vorkommen des Wortes name mit:

$test = "My name is Bob, her name is Sara." 
$test -replace 'name', 'baby' 

Antwort

2

Sie können alles erfassen bevore und hinten und ersetzen es:

'My name is Bob, her name is Sara.' -replace '(.*?)name(.*)', '$1baby$2' 
+0

Wow, das hat super funktioniert. Ich denke, dass ich nah dran war. Ich habe einige Beispiele mit '$ 1' und' $ 2' ausprobiert, aber es konnte nicht richtig funktionieren. Danke für die Hilfe. Ich habe nicht ganz verstanden, wie die Beispiele funktionieren, aber das macht jetzt sehr viel Sinn. – themackyo

5

Ein Weg n mal zu ersetzen:

$test = "My name is Bob, her name is Sara." 
[regex]$pattern = "name" 
$pattern.replace($test, "baby", 1) 

> My baby is Bob, her name is Sara 
+0

Also die '1' sagt nur ersetzen die erste, die Sie finden? Eine '2' würde beide dann ersetzen? Wenn du "3" sagst und nur 2 Wörter von "name" hast, würde das ein Fehler sein oder nur die ersten 2 ersetzen? – themackyo

+0

Ja, es ist die Anzahl der Ersetzungen zu machen. Wenn Sie eine Zahl übergeben, die größer ist als die tatsächliche Häufigkeit des Wortes, wird sie alle ersetzen. –

Verwandte Themen