regex 从文本字符串中删除特定单词?

2mbi3lxu  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(128)

假设你有一个像这样的变量字符串:"Report to Sam.Smith"
使用Powershell删除单词' Report '和' to '只留下Sam.Smith的最佳方法是什么??

ego6inou

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
}

相关问题