C++ 使用QRegExp过滤程序参数

C++ 使用QRegExp过滤程序参数,c++,regex,qt,path,qregexp,C++,Regex,Qt,Path,Qregexp,我想用QRegExp过滤命令 /path/to/executable --long-parameter -s /path/which/has/a/space/and/a/dash/\ -end 我尝试删除所有以-开头的参数和程序名(/path/to/executable) 这将删除参数,但如果存在/a/dash/\-end,则应将其视为参数,因为空格前面有反斜杠。有办法处理吗 /path/to/executable不是执行的程序,它只是一个字符串。为什么不将它们作为QStringList处理呢

我想用QRegExp过滤命令

/path/to/executable --long-parameter -s /path/which/has/a/space/and/a/dash/\ -end
我尝试删除所有以
-
开头的参数和程序名(
/path/to/executable

这将删除参数,但如果存在
/a/dash/\-end
,则应将其视为参数,因为空格前面有反斜杠。有办法处理吗


/path/to/executable不是执行的程序,它只是一个字符串。

为什么不将它们作为QStringList处理呢

您可以使用QString::split(…)方法将其拆分为标记(字符串,空格分隔),这样就不需要进行任何操作了

  • 检查每个字符串的第一个字符是否为破折号(或 任何其他检查)并将其移除(或执行任何您想要的操作)

  • 删除第一个字符串(即如图所示的可执行文件的路径)


这些论点来自哪里?如果可能的话,我总是尽量把它们当作QStringList来处理
QString str(...);
str.remove(QRegExp("^\\S*")).remove(QRegExp("\\s-\\S*")).trimmed();