6

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

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

4 回答 4

16
$result = $subject -creplace '^[^\\]*\\', ''

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

解释:

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

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

$result = $subject -creplace '(?s)^.*\\', ''
于 2013-05-22T14:38:55.447 回答
11

不需要使用正则表达式,试试 split 方法:

$string.Split('\')[-1]
于 2013-05-22T14:54:41.323 回答
2
"vmvalidate\administrator" -replace "^.*?\\"
  • ^ - 从字符串的开头
  • .* - 任意数量的任意字符
  • ? - 量词的惰性模式
  • \ - 使用转义字符的“反斜杠”“”

总之,它意味着“替换从字符串开头到反斜杠的所有字符”

于 2020-07-15T06:04:29.263 回答
0

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

"vmvalidate\administrator".SubString("vmvalidate\administrator".IndexOf('\')+1)
于 2013-05-22T19:21:53.493 回答