2016-04-24 421 views
3

以下是兩個字符。 1. {{ 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 

和我的輸出僅僅是一個字符串。它並沒有拉動所有的琴絃。有人可以建議我如何得到所有的字符串。提前致謝。

回答

7

[regex]::Match()只返回第一個匹配。使用[regex]::Matches()來捕獲所有匹配:

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

很好。它按預期工作。非常感謝Mathias。 – mahesh

+0

其實app.config文件也包含以下數據。 <! - CompareServices Installer Specific - > 當我運行查找字符串的命令時,它顯示如下, servicename}},CompareServices。{{servicename}}}比較{{servicename}} {{serviceinstance 請建議我怎樣才能拉弦,而不是整個說話。 – mahesh

+0

'{{([^ /)] +?)}}'使用非貪婪量詞\ – Matt

相關問題