在c++ /Qt中拆分Lua函数调用的混合字符串/数字参数列表
Splitting a mixed string/number argument list of a Lua function call in C++/Qt
我想用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++ 如何在 cout 之前洗牌/混合字符串
- 在同一行中读取混合输入(字符串/浮点数),并将其存储在数组中
- boost::p rogram_option::store 在选项字符串包含混合语言字符时引发异常
- 使用CIN和/或字符串读取带有混合输入的文本文件
- 如何打印混合 ASCII 字符和 Unicode 的字符串的每个字符
- 将 c++ 字符串与 c 混合
- 在VC ++浮点数据类型值中,如何检查字符串或特殊字符是否混合
- 我可以将编译时字符串比较与 MPL 模板混合使用吗?
- 检测混合字符串中的非字母字符
- C++正在混合我的字符串
- 在c++中逐行打印两个字符串的混合
- 在c++中从文件中读取字符串、整型和双精度的混合
- Yaml-cpp解析混合数组/字符串节点时出现问题
- c和c++混合编程中的字符串处理
- 增强:精神字符/字符串混合
- 在c++ /Qt中拆分Lua函数调用的混合字符串/数字参数列表
- Visual Studio 2010 上的C++:无法将字符串分配给字符串(不支持混合类型)
- RCDATA:混合字符串和二进制数据