我的字符串如下所示:
\\.\ROOT\abc\kjasdkj\MyClass:InstanceName.name="sxs-test3"
我想要一个只能在引号中提取名称的正则表达式,结果是sxs-test3
另外,我使用Windows Powershell来执行此操作,可以在PowerShell中完成吗?
由于
答案 0 :(得分:3)
这是另一个不需要正则表达式的选项:
$path.TrimEnd('"').Split('="',[StringSplitOptions]::RemoveEmptyEntries)[-1]
答案 1 :(得分:3)
对于那个字符串,这个正则表达式对我来说似乎最简单:
$string = '\\.\ROOT\abc\kjasdkj\MyClass:InstanceName.name="sxs-test3"'
if ($string -match '"(.+?)"') {
$Matches[1]
}
尽可能少地匹配双引号内的所有内容(延迟扩展)。
答案 2 :(得分:2)
if ($subject -cmatch '(?<=")[^"]*(?=")') {
$result = $matches[0]
}
这会查找除引号([^"]*
)之外的任意数量的字符,但前提是它们前面带有引号((?<=")
),后跟引号((?=")
)。
它甚至没有尝试处理转义引号。