正则表达式:引号中的最后一个字符串

时间:2017-03-26 15:31:15

标签: regex

鉴于此字符串和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]

它似乎正在发挥作用。我希望我不会遇到任何更复杂的数据,再次破坏它。

1 个答案:

答案 0 :(得分:0)

您可以使用:

$string -match '"([^"]+?)"'

然后匹配在$matches[1]