我并没有真正用正则表达式进行测试,并且在以下情况下试图找到合适的powershell正则表达式:
假设我有以下输入文件:
/export/home/ blabla1
blabla2
/export/home/ blabla3
blabla4
/export/home/ blabla5
blabla6
我需要一个powershell正则表达式表达式,用于分隔选择,包括/ export / home /,直到下一个/ export / home /出现。
你有什么想法吗?
提前致谢
答案 0 :(得分:2)
执行您要完成的任务的最简单方法是使用零长度分隔符执行-split
:
(Get-Content .\file.txt -Raw) -split "(?!^)(?=/export/home/)"
右手论证基本上是说“分裂时”:
(?!^) # not at start of string
(?=/export/home/) # next match is /export/home/
您可以使用TrimEnd()
删除尾随换行符:
$Delimiter = '/export/home/'
$Escaped = [regex]::Escape($Delimiter)
$Split = "(?!^)(?=$Escaped)"
$Result = (Get-Content .\file.txt -Raw) -split $Split |ForEach-Object { $_.TrimEnd() }