2017-06-30 7 views
1

ログファイルに2文字のすべてのテキストを収集しようとしています。Powershellですべてのテキストを2文字にする

たとえば、ログファイルのテキストは次のとおりです。

Conversation with Boris at 6/30/2017 7:26:35 AM on Server(jabber) 
(7:26:41 AM) [email protected]/Server: I likes cake 
This was a Message from Boris to everyone at 2017-06-29 22:35:18.724681 EVE ~~~ 

私が第1のブラケットと最後のチルダの間のすべてのテキストを収集したいと思います。

私はこれを行うためにREGEXを使用しようとしていますが、正しいパターンが不明です。

誰でも手助けできますか? wOxxOmからのコメントパー

+1

はドットが改行にマッチすることを許可することができます: ' '\(*〜+(S?)。?'' – wOxxOm

+0

は私が間違った文字列を得ました。誰かがこの文字列と正規表現で私を助けることができますか? (9:39:40 AM)directorbot:忙しい週末があります。 ~~~これはBorisからAllに2017-09-28で放送されました08:39:40.858803 EVE ~~~ 最初から(最後の~~~ – kendarr

答えて

1

、この正規表現パターンは、トリックを行うようだ:'(?s)\(.*?~+'

は、ここでは、PowerShellを使用し、それを使用することができます方法は次のとおりです。

$Sample = @" 
Conversation with Boris at 6/30/2017 7:26:35 AM on Server(jabber) 
(7:26:41 AM) [email protected]/Server: I likes cake 
This was a Message from Boris to everyone at 2017-06-29 22:35:18.724681 EVE ~~~ 
"@ 

$Sample -Match '(?s)\(.*?~+' | Out-Null 

$Result = $Matches.Values 

ここ$Resultです:

(jabber) 
(7:26:41 AM) [email protected]/Server: I likes cake 
This was a Message from Boris to everyone at 2017-06-29 22:35:18.724681 EVE ~~~ 
1

あなたの要件が最初の '('と最後の '〜')に固定されていれば、Regexを使用せずに簡単に見えるソリューションを提供しています。それを見てください

$x='Conversation with Boris at 6/30/2017 7:26:35 AM on Server(jabber) 
(7:26:41 AM) [email protected]/Server: I likes cake 
This was a Message from Boris to everyone at 2017-06-29 22:35:18.724681 EVE ~~~' 

$x.Substring($x.IndexOf('('),$x.IndexOf('~~~')-$x.IndexOf('(')+3) 


#Output 
    (jabber) 
    (7:26:41 AM) [email protected]/Server: I likes cake 
    This was a Message from Boris to everyone at 2017-06-29 22:35:18.724681 EVE ~~~ 

ホープこれは

関連する問題