Использование подстроки вы можете сделать это:
PS> $str = '[Test: ABC.Test (6)] MORETEXTGOESHERE [(null)] <(null)> - ' +`
'A red fox jumped the fence'
PS> $str.Substring($str.LastIndexOf('-')+2)
A red fox jumped the fence
Это немного хрупким, если обработка линии без каких-либо -
символов. Вот регулярное выражение, которое будет работать:
PS> $str | Select-String '-\s*([^-]*)$' | Foreach{$_.Matches[0].Groups[1].Value}
A red fox jumped the fence
И если обработка построчно, мне нравится этот подход:
PS> if ($str -match '-\s*([^-]*)$') { $matches[1] }
A red fox jumped the fence
И с более реалистичной строки:
PS> $str = '2010-09-09 07:15:31,749 [ABC: TEST.TEST (3)] ABB MYCLASS.TEST ' +`
'[(null)] <(null)> - MessageId: ' +`
'46b8fd3c-9ce8-4699-9d1b-91f31bfb5c62 CREATED'
PS> if ($str -match '- MessageId:\s*(.*)$') { $matches[1] }
46b8fd3c-9ce8-4699-9d1b-91f31bfb5c62 CREATED
или если вы не хотят СОЗДАВАТЬСЯ на выходе:
PS> if ($str -match '- MessageId:\s*(.*?)\s+CREATED\s*$') { $matches[1] }
46b8fd3c-9ce8-4699-9d1b-91f31bfb5c62
Хм .. возможно, я не рисовал полную картину, извините. – Henno
Вот пример реальной жизни 2010-09-09 07: 15: 31,749 [ABC: TEST.TEST (3)] ABB MYCLASS.TEST [(null)] <(null)> - MessageId: 46b8fd3c-9ce8-4699-9d1b-91f31bfb5c62 CREATED – Henno
Вы хотите извлечь все из MessageId до конца или вы хотите оставить «CREATED»? –