【问题标题】:extract all the strings between two characters powershell提取两个字符之间的所有字符串powershell
【发布时间】:2016-04-27 21:51:09
【问题描述】:

以下是两个字符。 1. {{ 2.}} 我正在尝试在以下文件中查找这些字符之间的所有字符串。

    <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

我的输出只是一个字符串。它并没有拉动所有的弦。有人可以建议我如何获得所有字符串。提前致谢。

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:

    [regex]::Match() 只返回 first 匹配。使用[regex]::Matches() 捕获所有匹配项:

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

    【讨论】:

    • 太棒了。它按预期工作。非常感谢马蒂亚斯。
    • 其实app.config文件还包含以下数据。 当我运行命令来查找字符串时,它显示如下, servicename}},CompareServices.{{servicename}}~Compare{{servicename}}{{serviceinstance 请建议我如何只提取字符串,而不是完整的句子。
    • {{([^/)]+?)}} 使用非贪婪量词\
    • 太棒了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2015-05-10
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多