c++ - 在 C++/Qt 中拆分 Lua 函数调用的混合字符串/数字参数列表

标签 c++ regex qt parsing qt4.8

我想使用 Qt (4.8) 解析 C++ 中 Lua 函数调用的参数列表,以避免依赖于 Lua 解释器。可以假定逗号分隔的参数列表仅包含字符串文字和数字。最终结果应该作为 QStringList 提供。棘手的部分是处理作为字符串参数一部分的逗号以及字符串参数可能使用单引号或双引号的事实。在我自己找到解决方案(使用正则表达式)之前,其他人可能已经处理过该问题或类似问题。

示例:

参数列表字符串

"Foo", "not 'bar'", 'a, b ,c', 42, 1e-8

应转换为包含项目的字符串列表

Foonot 'bar'a、b、c421e -8

(省略每个项目的引号以避免混淆)

最佳答案

不熟悉你的论点的所有可能性,但你提到的例子与此正确匹配:(?<=")[\w',-]*?(?=")|(?<=^'|\s').*(?='(?:,|$))|[\w-]+ ,如下所示:https://regex101.com/r/rX7fX7/3

这个想法是,你交替写下“困难”的情况,最好写在左边,而不太困难的解决方案写在右边。这样,引擎将首先检查是否存在问题情况,然后再尝试匹配整个单词。

如果引号/双引号出现在参数中间,则当前正则表达式无法正常工作,但您的示例没有这种情况。

关于c++ - 在 C++/Qt 中拆分 Lua 函数调用的混合字符串/数字参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340648/

相关文章:

c++ - 使用 PlaySound() API 同时播放多个文件

c++ - 在 C++ 代码中提供 qconvex 的输入

python - 使用正则表达式读取和处理文件

c++ - QT signal and slots inside second 类

c++ - 如何为 mac el capitan 安装 qt4?

c++ - 如果参数不是来自末尾,文档在哪里说明您不能从 QT 信号槽连接中删除参数?

c++ - #include(ing) 文件,变量名现在类型错误 C++

c++ - 如何将对象传递给c++中的函数?

regex - Scala 正则表达式忽略大小写

javascript - 如何在JavaScript和PHP中正确使用RegExp?