我有一个文本文件,我只想在斜杠“ /
示例:hello / world
在示例中,我只希望/之后的所有内容都是“ world”,我开始如下:
Get-Content .\myfile.txt
答案 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