如何使用正则表达式删除除某些“键” /“包含字符”之外的所有内容

时间:2018-12-11 10:52:40

标签: regex powershell replace

运行我的代码会在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之后的所有内容一无所知

2 个答案:

答案 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 .*\*\*(.*?)\*\*.*捕获**...**中的所有字符。必须使*转义\才能使其正常工作。