Powershell在斜杠后获取字符串

时间:2020-04-02 12:02:13

标签: powershell

我有一个文本文件,我只想在斜杠“ /

示例:hello / world

在示例中,我只希望/之后的所有内容都是“ world”,我开始如下:

Get-Content .\myfile.txt 

2 个答案:

答案 0 :(得分:0)

您可以为此使用-replace operator。下面将替换所有字符,直到并在每行中包含第一个/。不匹配的行将不会更改。

# Example with one line
'hello/world' -replace '^.*?/'

# Example reading each line of a text file
(Get-Content .\myfile.txt) -replace '^.*?/'

如果您要删除所有字符,直到并包括每行的最后一个/,则可以使用贪心匹配.*

(Get-Content .\myfile.txt) -replace '^.*/'

您可以应用上述相同的概念,并通过-Raw上的Get-Content开关将整个文件视为一个字符串。这样,您就可以删除第一次出现/或最后一次出现/之前的所有字符。您需要添加的只是单行修饰符语法(?s),该语法允许.匹配换行符:

# Remove Up Until First /
(Get-Content .\myfile.txt -Raw) -replace '(?s)^.*/'

# Remove Up Until Last /
(Get-Content .\myfile.txt -Raw) -replace '(?s).*/'

说明:

^指示字符串的开头。 .*?是所有字符的惰性匹配。由于我们有一个后续的/,因此它将延迟匹配直到找到/。由于没有提供替换字符串,因此将删除匹配的字符。

但是,它可能有助于拨入正则表达式字符串以仅覆盖确切的情况。

答案 1 :(得分:0)

这是有些不同的方法。 [ grin ]它使用内置的Split-Path cmdlet。

$InString = 'Hello/World'
$FinalPart = Split-Path -Path $InString -Leaf

$FinalPart

output = World