Regex Powershell正则表达式在空行后包含所有输出

Regex Powershell正则表达式在空行后包含所有输出,regex,powershell,Regex,Powershell,我正在运行一个exe,它在控制台中获取版本信息和输出。我想把输出保存成一个变量,但是我需要在空白行之前排除所有的东西,如果可能的话,在空白行后面的输出开始时删除数字,但是可以不做。我想这一部分会更容易,但我不知道如何在空白处排除东西 这是我的输出。它作为字符串返回 1 USB Receiver

我正在运行一个exe,它在控制台中获取版本信息和输出。我想把输出保存成一个变量,但是我需要在空白行之前排除所有的东西,如果可能的话,在空白行后面的输出开始时删除数字,但是可以不做。我想这一部分会更容易,但我不知道如何在空白处排除东西

这是我的输出。它作为字符串返回

1     USB Receiver                                                                                                                                                        
1.1   M525 [off-line]
1.2   M525

1     RQR24.06_B0030
1.1   [off-line]
1.2   RQM27.02_B0028
所以我一直在尝试使用带有selectstring的模式,只在空格后获得输出,但没有任何效果。我希望最终得到的输出没有领先的数字,但只工作在空白行。看起来是这样的:

1     RQR24.06_B0030
1.1   [off-line]
1.2   RQM27.02_B0028
有没有一个简单的方法可以做到这一点?我尝试过的其他方法一直在输出的顶部添加一个空格

# Multi-line input string.
$str = @'
1     USB Receiver
1.1   M525 [off-line]
1.2   M525

1     RQR24.06_B0030
1.1   [off-line]
1.2   RQM27.02_B0028
'@

# Get everything starting with the line after the first empty line,
# split it into individual lines, then remove the first token and subsequent
# whitespace from each line.
($str -split '\r?\n\r?\n', 2)[1] -split '\r?\n' -replace '^[^ ]+ +'
注意:如果您的输入来自文件,请将
$str
替换为
(Get Content-Raw file.txt)

上面的结果(字符串数组,每个元素在自己的行上):

RQR24.06_B0030
[离线]
RQM27.02_B0028
说明:

  • $str-split'\r?\n\r?\n',2
    通过前两个连续的换行符将输入拆分为(
    \r?\n
    ,它同时匹配Windows样式的CRLF和Unix样式的LF-only换行符)<代码>2表示最多应创建2个令牌

  • (…)[1]
    提取第二个令牌,即第一条空lline之后的所有内容

  • -split'\r?\n'
    将生成的令牌拆分为单独的行

  • -replace'^[^]+'
    有效地从每行中删除第一个标记及其后面的空格,只留下第二个空格分隔的标记