2016-04-24 149 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

相关问题