c++ - 使用 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)

QString str(...);
str.remove(QRegExp("^\\S*")).remove(QRegExp("\\s-\\S*")).trimmed(); 

这会删除参数,但是如果有 /a/dash/\-end,这将被视为参数,当它应该被保留时,因为空格前面有反斜杠.有什么办法可以处理吗?

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

最佳答案

为什么不将它们作为 QStringList 来处理?

您可以使用QString::split(...) 方法将其拆分为标记(字符串、空格分隔),然后就很简单了

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

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

关于c++ - 使用 QRegExp 过滤程序参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14663361/

相关文章:

javascript - 如何通过正则表达式替换在 hyperHTML 中用 html 标签包装字符串

c++ - 从另一个函数 f0(x,y) 定义函数 f1(x) 对象,但将 y 设置为固定值 c++

c++ - 实现文件锁以复制文件

regex - 转到正则表达式以捕获具有特殊字符的第一次出现

javascript - QML Canvas - 为什么 requestPaint() 函数不调用绘画?

python - 中央小部件的 pyqt 设计器和布局

c++ - Qt 5.3.1 - 静态构建导致链接器错误

c++ - 如何在 CMake 目标上请求 C++11 或更高版本?

c++ - 如何处理 Win32 多行编辑控件中的 Enter 键?

iphone - 使用 NSRegularExpression 提取文本