鉴于此字符串和PowerShell 2.0
Jrn.Grid "Control; Modal , Opening Worksets , Dialog_Revit_Partitions; Control_Revit_Partitions", "Selection" , "Rows;Shared Views, Levels, Grids;Shared Views, Levels, Grids;"
我试图在引号的最后一部分。我从
开始$string -match '(["])(\\?.)*?\1'
并且$matches[0]
正确返回
"Control; Modal , Opening Worksets , Dialog_Revit_Partitions; Control_Revit_Partitions"
$matches[-1]
不返回"Rows;Shared Views, Levels, Grids;Shared Views, Levels, Grids;"
,奇怪的是$matches[1]
只返回一个双引号。
我还尝试$string -match '(["])(\\?.)*?\1$'
,使用行结束锚,然后$ matches [0]返回引号中的所有内容。我怀疑我在测试嵌套引号方面存在问题,实际上我并不想将它们视为嵌套,我希望将它们视为一个系列。
我错过了什么,才得到最后一场比赛。并且,我可以做什么不在捕获中包含引号,它们之间是什么?
AHA。根据Toto的例子,我添加了行尾锚并使用$ matches [1],因此
$string -match '"([^"]+?)"$'
$matches[1]
它似乎正在发挥作用。我希望我不会遇到任何更复杂的数据,再次破坏它。
答案 0 :(得分:0)
您可以使用:
$string -match '"([^"]+?)"'
然后匹配在$matches[1]