我尝试使用.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;在字符串中。我哪里错了?
答案 0 :(得分:0)
您可以使用
(?<="MYDOMNAME",Name=")[^"]+
请参阅demo
lookbehind (?<="MYDOMNAME",Name=")
确保在除双引号之外的字符序列之前有"MYDOMNAME",Name="
。
您的正则表达式"MYDOMAIN",Name="(?+")
无效,它会抛出无法识别的分组构造错误,因为(?...)
无法解析为捕获,也不是非捕获,也不会原子团。