运行我的代码会在txt文件中提供此输出:
19:27:28.636 ASSOS\032AB5601\0223-\032312DEEE8EB423._http._tcp.local. can
be reached at ASSOS-032DEEE8EB423.local.:80 (interface 1)
所以我只想解析字符串“ ASSOS-032DEEE8EB423.local”并从txt文件中删除其他所有内容。我不知道如何使用正则表达式删除包含ASSOS-的字符串之外的所有内容。因此,问题是字符串将始终包含ASSOS-,但其余部分始终更改为不同的数字。因此,我试图始终能够获得ASSOS-XXXXXXXXXXX.local
这就是我要尝试的方式:
$string = 'Get-Content C:\MyFile.Txt'
$pattern = ''
$string -replace $pattern, ' '
只是我对正则表达式以及如何编写它以解析出包含“ ASSOS-”的字符串并删除ASSOS-XXXXXXXXXXX.local之后的所有内容一无所知
答案 0 :(得分:1)
我会将文件内容通过管道传递到Select-String
,并返回以"ASSOS-"
开头,以"local"
结尾并在其之间包含任何非空白字符的字符串的匹配值: / p>
Get-Content test.txt | Select-String -Pattern "ASSOS-\S*local" | ForEach-Object {$_.Matches.Value}
答案 1 :(得分:0)
可能的解决方案:
$str = "19:27:28.636 ASSOS\032AB5601\0223-\032312DEEE8EB423._http._tcp.local. can
be reached at **ASSOS-032DEEE8EB423.local**.:80 (interface 1)"
$str -replace '.*\*\*(.*?)\*\*.*', '$1'
RegEx
.*\*\*(.*?)\*\*.*
捕获**...**
中的所有字符。必须使*
转义\
才能使其正常工作。