2016-04-27 18 views
0

これは、StackOverflowの私の最初の投稿であり、正規表現は私には新しく、私に同行してください。正規表現 - 一致する文字をキャプチャ

私はpowershellコマンドイベントログ内のフィールドをキャプチャしようとしています。私は括弧の中の文字列のGet-ADUserをキャプチャし、また

最終出力の可能な場合は、「ユーザー名」の値フィールドをキャプチャする

(Get-AdUser): name="Identity"; value="Username" 

: 私は、次の形式のテキストを持っています

Get-AdUser Username 

は完璧です。

私は、 "Out-Default"という単語を除いて、かっこ内の任意の値をキャプチャしたいと思っています。 Out-Defaultは、コマンド自体ではなく、コマンドの出力です。

は、これまでのところ私が持っている:「アウト・デフォルト」を除き、括弧内のものを一致さ

\((?!Out-Default)([^)]+)\) 

ここからどうやってアプローチするのか分かりません。アドバイスをいただければ幸いです。

アップデート - それはキャプチャするだけで1キャプチャグループを使用することが可能である:
(Get-AdUser): name="Identity"; value="Username" 

と結果が

Get-AdUser name=Identity value=Username 

のように見えるがありますか?

+0

方法\\(\\(\ ^)] +)\)。\; \ s +(\ w +)(?= \ "ユーザー名\") – Ashish

答えて

2

・ホープ、この作品

\((?!Out-Default)([^)]+)\).*?value="([^"]+)" 

Regex demo

は説明:
\:キャプチャグループsample
(?!…):否定先読みsample 0123特殊文字sample
(…)をエスケープ [^x]:ない1文字のx sample
+:1つまたは複数のsample
.:改行を除く任意の文字sample
*:0回以上sample
?:一度またはnone sample

+0

こんにちは、ありがとう。すべての文字が同じ行にある場合に機能します。しかし、value = "username"が別の行にあるシナリオはどうですか? – Shiftey

関連する問題