2017-03-26 10 views
0

の最後の文字列は、私は引用符でちょうど最後の部分を取得しようとしています。この文字列との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]ながら正しく"Rows;Shared Views, Levels, Grids;Shared Views, Levels, Grids;"を返さない

"Control; Modal , Opening Worksets , Dialog_Revit_Partitions; Control_Revit_Partitions" 

​​

を返し、奇妙 $matches[1]ただ一つの二重引用符を返します。 私はまた、 $string -match '(["])(\\?.)*?\1$'、行末のアンカーで試してみました。そして、$ matches [0]はすべてを引用符で返します。私はネストした引用符をテストすることに問題があると思われます。実際には、それらをネストされたものとして扱いたいとは思わないので、それらを一連のものとして扱いたいと思います。 最後の試合には何が欠けていますか?そして、キャプチャに引用符を含めないようにするにはどうすればよいのですか?間には何がありますか?

AHA。 Totoの例に基づいて、行末アンカーを追加して$ matches [1]を使用しました。したがって、

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

と思われます。私はそれをもう一度破壊する、それ以上の複雑なデータに遭遇しないことを願っています。

+0

$matches[1]であるだけでは使用しない理由: ' "[^"] +" ' – anubhava

+0

OKを一致させるために、私は私が持っている問題の一つを参照してください。 $ matches [0]は最初の一致、$ matches [1]は2番目のもので、PowerShellでは$ matches [-1]が最後の一致であると仮定していましたそして、anubhavaの例では引用符で囲まれていないものが返されますが、Jrn.GridとTotoの例は引用符のない引用部分を返しますが、laではなく最初の引用符を返しますst、トトはOPに書かれているように、私は右に直接指摘しました。 – Gordon

答えて

0

は、あなたが使用することができます

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

その後、試合は

関連する問題