通过PowerShell日志,我试图提取命令,同时放弃运行命令的路径。例如,
PS C:Windowssystem32> pwd
我只想退回pwd
。我知道.split
可以实现这一点,但我很难让正则表达式正常工作。路径会有所不同,因此在特定路径上构建正则表达式将不起作用。我现在的尝试是匹配";PS";以及">";,例如这里的正则表达式CCD_ 4。然而,当路径中有字母"ps"时,这会导致意外的结果。
也不希望分割>
,因为如果一个命令中有>
,那么我不想修剪实际的命令。
只需取一行,将其拆分并取最后一行-如果您希望以这种方式,则不需要正则表达式
(("PS C:Windowssystem32> pwd") -split "> ",2)[-1]
不是最好的正则表达式,但可以完成任务:
("PS C:Windowssystem32> pwd") -replace "^.*?> ",""
编辑:更改了注释中提到的正则表达式-对于"不需要转义>quot;
是否要使用RegEx提取命令?
试试这个:
$Line = 'PS C:Windowssystem32> pwd'
if($Line -match '(?i)ps [a-z]:(?:\[a-z0-9]+)+>(?<Cmd>.*)') {
$Matches.Cmd
}
返回pwd
。在>(
之间放置一个空格,以删除前导空格。