Как использовать регулярные выражения, чтобы удалить все, кроме определенных "ключ" / "содержащий символ" - PullRequest
0 голосов
/ 11 декабря 2018

Выполнение моего кода дает мне этот вывод в текстовом файле:

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 голосов
/ 11 декабря 2018

Я бы передал содержимое файла на Select-String и вернул бы значения совпадений для строки, начинающейся с "ASSOS-", заканчивающейся "local" и имеющей любые непробельные символы между:

Get-Content test.txt |  Select-String -Pattern "ASSOS-\S*local" | ForEach-Object {$_.Matches.Value}
0 голосов
/ 11 декабря 2018

Возможное решение:

$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 .*\*\*(.*?)\*\*.* захватывает все символы в пределах **...**.* должен быть экранирован \, чтобы заставить его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...