正则表达式 - 匹配字符然后捕获

时间:2016-04-27 04:33:27

标签: regex powershell

这是我在StackOverflow上的第一篇文章,正则表达式对我来说很新,请耐心等待。

我正在尝试捕获powershell命令事件日志中的字段。 我有以下格式的文本:

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

我想捕获括号 Get-ADUser 中的字符串,并捕获"用户名"

的值字段

如果可能的话,

的最终输出
Get-AdUser Username

会很完美。

问题是我想要捕获括号内的任何值,除了单词" Out-Default"。 Out-Default是命令的输出,而不是命令本身。

到目前为止,我有:

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

匹配括号内的任何内容,除了" Out-Default"。

我不确定如何从这里接近它。任何建议都表示赞赏。

更新 - 是否可以仅使用1个捕获组来捕获:

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

并且结果看起来像

Get-AdUser name=Identity value=Username

1 个答案:

答案 0 :(得分:2)

希望这项工作

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

Regex demo

<强>解释
\:逃脱一个特殊字符sample
( … ):捕获小组sample
(?!…):否定前瞻sample
[^x]:一个不是x sample的字符 +:一个或多个sample .:除了换行符sample之外的任何字符 *:零次或多次sample
?:一次或无sample