如何使用.NET正则表达式返回匹配的值?

时间:2015-08-11 23:43:57

标签: regex powershell

我尝试使用.NET regex在PowerShell中捕获 user.name ,如下所示:

Return ([regex]::Match($string,'"MYDOMAIN",Name="(?+")').Value)

要搜索的示例字符串:

$string = '\\.\root\cimv2:Win32_Account.Domain="MYDOMNAME",Name="user.name"\\.\root\cimv2:Win32_Account.Domain="\\.\root:\,etc,etc'

我正在寻找第一次出现的 user.name (如果碰巧有多个)。

英文:返回模式" MYDOMAIN",姓名="以及由任何角色组成的任何模式,重复一次或多次,直至第一个"然后停下来。

问题是我得到的一切直到最后#34;在字符串中。我哪里错了?

1 个答案:

答案 0 :(得分:0)

您可以使用

(?<="MYDOMNAME",Name=")[^"]+

请参阅demo

lookbehind (?<="MYDOMNAME",Name=")确保在除双引号之外的字符序列之前有"MYDOMNAME",Name="

您的正则表达式"MYDOMAIN",Name="(?+")无效,它会抛出无法识别的分组构造错误,因为(?...)无法解析为捕获,也不是非捕获,也不会原子团。