我写了一个PowerShell脚本来比较两个文本文件。在file1中,数据被组织。但是在file2中,数据没有组织。我通常手动组织数据。但现在数据增加了。我需要使用PowerShell自动组织。
PowerShell必须读取两个特殊字符之间的数据。例如:<****@
是我的数据。它必须只读****
。这种模式重复'n'次。
答案 0 :(得分:1)
使用正则表达式<(.*?)@
来匹配相关的子字符串。 .*?
匹配<
与下一次@
之间的所有字符(非贪婪/最短匹配)。括号将匹配放在捕获组中,因此可以在以后引用。
Select-String -Path 'C:\path\to\file2.txt' -Pattern '<(.*?)@' -AllMatches |
Select-Object -Expand Matches |
ForEach-Object { $_.Groups[1].Value }
$_.Groups[1]
指的是匹配中的第一个捕获组。