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