2016-04-24 14 views
3

Nachfolgend sind die zwei Zeichen. 1. {{ 2.}} Ich versuche, alle Zeichenfolgen zwischen diesen Zeichen in der folgenden Datei zu finden.extrahieren Sie alle Zeichenfolgen zwischen zwei Zeichen Powershell

<add key="CSDFG_SqlServerFailOverInterval" value="{{environment}}"/> 
    <add key="CSDFG_JobResetInterval" value="600000"/> 
    <add key="FileTypeFilter" value="{{filetype}}"/> 

und ich bin mit folgenden Powershell-Befehle, ist

$x = C:\app.config 
$s = Get-Content $x 
$prog = [regex]::match($s,'{{([^/)]+)}}').Groups[1].Value 
write-host $prog 

und meine Ausgabe einer Zeichenkette nur. Es zieht nicht alle Fäden. Kann mir bitte jemand vorschlagen, wie man die ganzen Saiten bekommt. Danke im Voraus.

Antwort

7

[regex]::Match() gibt nur die erste Übereinstimmung zurück. Verwenden Sie [regex]::Matches(), um alle Übereinstimmungen zu erfassen:

$s = Get-Content 'C:\app.config' 
[regex]::Matches($s, '{{([^/)]+)}}') |ForEach-Object { $_.Groups[1].Value } 
+0

Großartig. Es funktioniert wie erwartet. Vielen Dank Mathias. – mahesh

+0

Tatsächlich enthält die app.config-Datei auch folgende Daten. Wenn ich den Befehl renne die Saiten, um herauszufinden, wie es ist, zeigt, wie folgt, service}}, CompareServices. {{service}} ~ Vergleichen {{service}} {{serviceinstance Bitte vorschlagen mir wie kann ich nur strings ziehen, nicht ganze sentense. – mahesh

+0

'{{([^ /)] +?)}}' Verwende einen nicht-gierigen Quantifizierer \ – Matt

Verwandte Themen