【问题标题】:Powershell Select-String not finding what I expectPowershell Select-String 没有找到我所期望的
【发布时间】:2022-01-04 19:27:40
【问题描述】:

我正在尝试解析文件路径以获取文件名,并且我有一个正则表达式 .*\

我会用下面的

Select-String -Pattern '.*\\' -InputObject $test -NotMatch

在像 C:\Users\User\Desktop\test.exe 这样的文件路径上,它返回空白。如果我删除 -NotMatch 标志,它会返回整个路径。我尝试使用正则表达式测试器,所以我知道正则表达式是正确的。我做错了什么?

【问题讨论】:

    标签: powershell select-string


    【解决方案1】:

    看起来 -notmatch 如果匹配则忽略整行。这个怎么样?这是在行尾不是反斜杠的任意数量的字符。

    'C:\Users\User\Desktop\test.exe' | select-string [^\\]*$ | % matches | % value
    
    test.exe
    

    【讨论】:

    • 哦,你是对的。我认为它会返回除匹配之外的所有内容。做什么 | %s 在您的回复中是什么意思?
    • | foreach-object propertyname一样,效果和| select -expand propertyname一样。
    【解决方案2】:

    不要使用Select-String,而是使用Split-Path -leaf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-30
      • 2013-12-14
      • 2018-01-02
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多