【发布时间】:2023-02-01 02:12:19
【问题描述】:
我有一个在 Windows 10 命令行运行的正则表达式,并得到错误:
Expressions are only allowed as the first element of a pipeline.
我不确定如何将它与第一个元素中的匹配部分放在一起。
这是文档内容(显示了重要部分......有多个制造商和 S/N,但我只需要特定的):
e:\temp\details.txt:
...
Manufacturer: SGSS
S/N: A791D734804
...
我用这个powershell从文档中成功获取了以上两行代码,但是我在提取分号后的序列号时遇到了问题。
这用于提取制造商和 S/N 行(上下文部分也在模式匹配后获取行):
powershell "Get-Content e:\temp\details.txt | select-String -Pattern SGSS -Context 0,1"
但是,我试图只返回序列号 (),并得到上面的错误。这是我收到匹配/命令错误的地方:
powershell "Get-Content -Raw e:\temp\details.txt | select-String -Pattern SGSS -Context 0,1 | $_ -match '(?ms)(N:\s)(([a-zA-Z0-9])+)'"
我测试了正则表达式在正则表达式测试器中是否有效:
(N:\s)(([a-zA-Z0-9])+)
我使用了这个 example for the match ,但由于我正在做的其他事情,我不能将它放在表达式中的第一位(如示例)。你有什么建议吗?
【问题讨论】:
标签: regex powershell