假设你有一个像这样的变量字符串:"Report to Sam.Smith"使用Powershell删除单词' Report '和' to '只留下Sam.Smith的最佳方法是什么??
"Report to Sam.Smith"
Report
to
Sam.Smith
ego6inou1#
必须使用**-replace**:
$string = "Report to Sam.Smith" $string = $string -replace "Report to ","" $string # Output --> "Sam.Smith"
或者像这样:
$string = "Report to Sam.Smith" $string = $string.replace("Report to ","") $string # Output --> "Sam.Smith"
但是如果你需要使用正则表达式,因为字符串的单词可以变化,那么你必须重新考虑这个问题。你不会去擦除字符串的一部分,而是从其中提取一些东西。在你的情况下,我认为你正在寻找一个用户名使用名称.姓氏格式,这是很容易捕获:
$string = "Report to Sam.Smith" $string -match "\s(\w*\.\w*)" $Matches[1] # Output --> Sam.Smith
使用**-match**将返回True / False。如果返回True,则会创建一个名为$Matches的数组。它将在索引0($Matches[0])上包含匹配正则表达式的整个字符串。每一个大于0的索引将包含从正则括号中捕获的文本,称为“捕获组”。我强烈建议使用 *if语句 *,因为如果正则表达式返回false,数组$Matches将不存在:
$string = "Report to Sam.Smith" if($string -match "\s(\w*\.\w*)") { $Matches[1] # Output --> Sam.Smith }
1条答案
按热度按时间ego6inou1#
必须使用**-replace**:
或者像这样:
但是如果你需要使用正则表达式,因为字符串的单词可以变化,那么你必须重新考虑这个问题。
你不会去擦除字符串的一部分,而是从其中提取一些东西。
在你的情况下,我认为你正在寻找一个用户名使用名称.姓氏格式,这是很容易捕获:
使用**-match**将返回True / False。
如果返回True,则会创建一个名为$Matches的数组。它将在索引0($Matches[0])上包含匹配正则表达式的整个字符串。
每一个大于0的索引将包含从正则括号中捕获的文本,称为“捕获组”。
我强烈建议使用 *if语句 *,因为如果正则表达式返回false,数组$Matches将不存在: