Powershell正则表达式,选择直到特定的字符串

时间:2015-10-23 08:46:48

标签: regex powershell


我并没有真正用正则表达式进行测试,并且在以下情况下试图找到合适的powershell正则表达式: 假设我有以下输入文件:
/export/home/ blabla1 blabla2
/export/home/ blabla3 blabla4
/export/home/ blabla5 blabla6
我需要一个powershell正则表达式表达式,用于分隔选择,包括/ export / home /,直到下一个/ export / home /出现。
你有什么想法吗? 提前致谢

1 个答案:

答案 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() }