我想使用 Qt (4.8) 解析 C++ 中 Lua 函数调用的参数列表,以避免依赖于 Lua 解释器。可以假定逗号分隔的参数列表仅包含字符串文字和数字。最终结果应该作为 QStringList
提供。棘手的部分是处理作为字符串参数一部分的逗号以及字符串参数可能使用单引号或双引号的事实。在我自己找到解决方案(使用正则表达式)之前,其他人可能已经处理过该问题或类似问题。
示例:
参数列表字符串
"Foo", "not 'bar'", 'a, b ,c', 42, 1e-8
应转换为包含项目的字符串列表
Foo
、not 'bar'
、a、b、c
、42
和 1e -8
(省略每个项目的引号以避免混淆)
最佳答案
不熟悉你的论点的所有可能性,但你提到的例子与此正确匹配:(?<=")[\w',-]*?(?=")|(?<=^'|\s').*(?='(?:,|$))|[\w-]+
,如下所示:https://regex101.com/r/rX7fX7/3
这个想法是,你交替写下“困难”的情况,最好写在左边,而不太困难的解决方案写在右边。这样,引擎将首先检查是否存在问题情况,然后再尝试匹配整个单词。
如果引号/双引号出现在参数中间,则当前正则表达式无法正常工作,但您的示例没有这种情况。
关于c++ - 在 C++/Qt 中拆分 Lua 函数调用的混合字符串/数字参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340648/