【问题标题】:powershell string replace regular expression does not workpowershell字符串替换正则表达式不起作用
【发布时间】:2018-06-19 04:24:30
【问题描述】:


我正在对带有正则表达式的字符串使用 Replace 函数:

PS C:\>  "Domain:                    ad.unsw.edu.au".Replace('Domain: *','')
Domain:                    ad.unsw.edu.au

但这是可行的:

PS C:\>  "Domain:                    ad.unsw.edu.au" -Replace 'Domain: *',''
ad.unsw.edu.au

谁能解释一下为什么字符串替换方法不起作用?

【问题讨论】:

    标签: powershell replace


    【解决方案1】:

    我向你展示它是如何工作的就足够了吗? ;-)

    "Domain:                    ad.unsw.edu.au" -Replace 'Domain:\s*',''
    

    【讨论】:

    • 谢谢。然而它仍然不是全貌:
    • PS C:\> "Domain: ad.unsw.edu.au".Replace('Domain:\s*','') 仍然不进行文本替换。
    • 实际上我的意思是使用“普通”Powershell 语法而不是方法。然后它会工作。
    • "...".Replace() 是字符串替换方法而不是正则表达式替换方法。这就是为什么它的行为不同。已经在这里问过了-> link
    • [regex]::replace('Domain: ad.unsw.edu.au','Domain:\s+','') 所以这会像你预期的那样工作。
    【解决方案2】:

    不需要使用正则表达式替换,你可以这样做:

    "Domain:                    ad.unsw.edu.au".Replace('Domain:', '').Trim()
    

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2015-11-30
      • 2021-11-29
      相关资源
      最近更新 更多