给出类似
的字符串$uninstallString = '"C:\Autodesk\Dynamo\Core\Uninstall\unins000.exe" /SILENT'
我正在尝试使用RegEx来捕获引号的内容以及空格后的其余内容。这很近...
$regularExpression = '\"(?<executable>([^\"])\")\s{1,}(?<arguments>(.+))'
但是我在可执行文件捕获中得到了结束语。我的理解是[^\"]
将捕获不包含引号的所有内容,从而使命名捕获之外的转义引号起作用。但是,在这种情况下,我的理解当然是错误的。 ;)
我将永远不需要嵌套的引号,单引号或撇号,因此我试图使它尽可能简单并仍然捕获我需要的内容。
答案 0 :(得分:3)
您的executable
组将捕获尾随的"
,将)
向左移动:
$regularExpression = '"(?<executable>[^"]+)"\s+(?<arguments>.+)'
请参见regex demo。结果:
请注意,我删除了编号的捕获组,因为它们对于您的方案而言似乎是多余的。
详细信息
"
-一个"
字符(?<executable>[^"]+)
-组“可执行”:除"
以外的其他1个字符"
-一个"
字符\s+
-1个以上的空格(注意{1,}
等于+
)(?<arguments>.+)
-分组“参数”:除换行符外的任意1个以上字符。