2016-04-24 36 views
3

以下は2文字です。 1. {{ 2.}} これらの文字の間のすべての文字列を次のファイルで検索しようとしています。2文字の間のすべての文字列を抽出します。powershell

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

と、私は次のPowerShellコマンドを使用しています、

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

と私の出力は、ただ1つの文字列です。すべての弦を引っ張っているわけではありません。誰かが私にすべての弦を得る方法を提案してもらえますか?前もって感謝します。

答えて

7

[regex]::Match()は、最初にに一致します。すべての一致をキャプチャするには[regex]::Matches()を使用してください:

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

期待どおりに動作しています。マティアスに感謝します。 – mahesh

+0

実際には、app.configファイルには次のデータも含まれています。 <! - CompareServicesインストーラ固有 - > <サービス名>} {サービス名}}を比較CompareServices {{サービス名} /> 文字列を検索するコマンドを実行すると、 servicename}}、CompareServices {{servicename}}〜{{servicename}}を比較{{serviceinstance 私はどうやって弦を引くことができますか? – mahesh

+0

'{{([^ /)] +?)}}'貪欲でない量限定子を使用してください。\ – Matt

関連する問題