正则表达式(Regex)用于在引用之间提取名称 - Powershell

时间:2013-08-10 22:16:44

标签: regex powershell

我的字符串如下所示:

\\.\ROOT\abc\kjasdkj\MyClass:InstanceName.name="sxs-test3"

我想要一个只能在引号中提取名称的正则表达式,结果是sxs-test3

另外,我使用Windows Powershell来执行此操作,可以在PowerShell中完成吗?

由于

3 个答案:

答案 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]
} 

这会查找除引号([^"]*)之外的任意数量的字符,但前提是它们前面带有引号((?<=")),后跟引号((?="))。

它甚至没有尝试处理转义引号。