正则表达式内的引号

时间:2019-09-16 18:09:41

标签: regex powershell

给出类似

的字符串
$uninstallString = '"C:\Autodesk\Dynamo\Core\Uninstall\unins000.exe" /SILENT' 

我正在尝试使用RegEx来捕获引号的内容以及空格后的其余内容。这很近...

$regularExpression = '\"(?<executable>([^\"])\")\s{1,}(?<arguments>(.+))'

但是我在可执行文件捕获中得到了结束语。我的理解是[^\"]将捕获不包含引号的所有内容,从而使命名捕获之外的转义引号起作用。但是,在这种情况下,我的理解当然是错误的。 ;) 我将永远不需要嵌套的引号,单引号或撇号,因此我试图使它尽可能简单并仍然捕获我需要的内容。

1 个答案:

答案 0 :(得分:3)

您的executable组将捕获尾随的",将)向左移动:

$regularExpression = '"(?<executable>[^"]+)"\s+(?<arguments>.+)'

请参见regex demo。结果:

enter image description here

请注意,我删除了编号的捕获组,因为它们对于您的方案而言似乎是多余的。

详细信息

  • "-一个"字符
  • (?<executable>[^"]+)-组“可执行”:除"以外的其他1个字符
  • "-一个"字符
  • \s+-1个以上的空格(注意{1,}等于+
  • (?<arguments>.+)-分组“参数”:除换行符外的任意1个以上字符。