【问题标题】:Regex to remove what ever comes in front of "\" using powershell正则表达式使用 powershell 删除“\”前面的内容
【发布时间】:2013-05-22 14:37:26
【问题描述】:

想要一个帮助,想要一个正则表达式来消除“\”以及它之前的内容,

Input should be "vmvalidate\administrator" 
and the output should be just "administrator"

【问题讨论】:

    标签: regex powershell


    【解决方案1】:
    $result = $subject -creplace '^[^\\]*\\', ''
    

    删除字符串开头的所有非反斜杠字符,后跟一个反斜杠:

    说明:

    ^      # Start of string
    [^\\]* # Match zero or more non-backslash characters
    \\     # Match a backslash
    

    这意味着如果字符串中有多个反斜杠,则只会删除第一个(以及指向它的文本)。如果要删除 last 反斜杠之前的所有内容,请使用

    $result = $subject -creplace '(?s)^.*\\', ''
    
    【解决方案2】:

    不用regex,试试split方法:

    $string.Split('\')[-1]
    

    【讨论】:

    • $string.Split('\')[1] 开朗一点。
    • 如果输入不包含任何\ (例如输入已经是administrator),[1] 将不返回任何内容,无论[-1] 是否会返回输入。
    【解决方案3】:
    "vmvalidate\administrator" -replace "^.*?\\"
    
    • ^ - 从字符串开始
    • .* - 任意数量的任意字符
    • ? - 量词的惰性模式
    • \ - 使用转义字符“”的“反斜杠”

    合起来意思是“替换从字符串开头到反斜杠的所有字符”

    【讨论】:

      【解决方案4】:

      这是我在学习正则表达式或拆分之前的做法。

      "vmvalidate\administrator".SubString("vmvalidate\administrator".IndexOf('\')+1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-18
        • 1970-01-01
        • 2019-02-16
        相关资源
        最近更新 更多