powershell或excel分割string中的最后两个逗号

我有一个文件共享列表(成百上千行),并在Excel中完美alignment,我可以使用文本到列拆分。 但是我遇到了一个问题,因为有很多文件path在名称中都有一个逗号,而且正在拆分,而不是实际需要的分隔符。 这是一个string的例子:

\\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - $671.16 - 5-16-14.xlsm,DOMAIN\YA-MGD , RWXD \\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - $671.16 - 5-16-14.xlsm,DOMAIN\SGRP-Triple, RWXD 

在上面的两行中,分别是在Jones和“DOMAIN”分裂,然后是最后一个逗号,离开完整的分享path。 逗号的数量可以变化到4或5.我只希望它在最后两个逗号分裂。 我怎样才能以编程方式做到这一点? 一个Excel公式或PowerShell脚本将是理想的。 任何帮助将不胜感激。

使用regex分割最后一次出现的,两次:

 $String = '\\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - $671.16 - 5-16-14.xlsm,DOMAIN\YA-MGD , RWXD ' $Remainder,$Last = $String -split ',(?=[^,]*$)' |ForEach-Object {$_.Trim()} $First,$Middle = $Remainder -split ',(?=[^,]*$)' |ForEach-Object {$_.Trim()} 

导致:

 PS C:\> $First,$Middle,$Last \\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - $671.16 - 5-16-14.xlsm DOMAIN\YA-MGD RWXD 

PowerShell和RegEx可以做到这一点。 以下是解释RegEx的链接:

https://regex101.com/r/eW2rP5/2

我将使用的RegEx是^(.+?),([^,]+?),([^,]*)$ 。 从行首开始到第二个到最后一个逗号,跳过逗号,然后是所有非逗号字符到最后一个逗号,再次跳过逗号,所有非逗号字符到结尾线。 每个都是自己的捕获组,所以我们可以使用自动的$Matchesvariables为每个部分创build一个PSCustomObject属性,如下所示:

 @" \\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - $671.16 - 5-16-14.xlsm,DOMAIN\YA-MGD , RWXD \\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - $671.16 - 5-16-14.xlsm,DOMAIN\SGRP-Triple, RWXD "@ -split "`r`n"|Where{$_ -match "^(.+?),([^,]+?),([^,]*)$"}|ForEach{[PSCustomObject]@{"SharePath"=$Matches[1];"User"=$Matches[2].trim();"Rights"=$Matches[3].trim()}} 

神奇的地方在于它与RegEx匹配的Where语句和使用这些匹配来为每行创build自定义对象的ForEach循环的组合。 你最终:

 SharePath User Rights --------- ---- ------ \\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - .16 - 5-16-14.xlsm DOMAIN\YA-MGD RWXD \\\Share\MMMC\MMMC\Employees\Jones, Pat\Payment Vouchers\The Creative Group\Amy DOE\2014\Inv. # 403412 - .16 - 5-16-14.xlsm DOMAIN\SGRP-Triple RWXD