用于解析c++中数组索引表达式的正则表达式
Regular expression for parsing array indexing expressions in C++
我正在对c++源代码做一些语义分析。我有一个正则表达式来将数组声明从int [123] [1234]
转换为int [number] [number]
。
但是我希望表达式也能够匹配这些维度int [i * x][ring_size][w + 6]
。
我如何告诉它匹配里面的任何东西(包括符号和空格)[]?
我的正则表达式是:regex arrayDims("\[[0-9]+\]");
。我使用c++ 11正则表达式头。
谢谢
如果您想匹配[]
中的任何内容,那么尝试使用\[.+?\]
或类似的内容。?
将*
变成非贪婪的。阅读此页。
编辑:我必须注意到,虽然这适用于稍微复杂的表达式,而不仅仅是数字,如果表达式内有更多的[]
,这将不起作用。
。将我的模式应用于array[anotherarray[5]]
,结果是[anotherarray[5]
,而不是[anotherarray[5]]
(注意末尾的额外括号)。
如果您想匹配像[w + 6]
这样的算术表达式,那么您不能使用正则表达式。算术表达式超出了正则表达式的能力。您必须使用某种与上下文无关的解析器。
相关文章:
- 数组索引的值没有增加
- (C++)分析树以计算返回错误值的简单算术表达式
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 查找最接近的大于当前数字的数字的索引
- 使用正则表达式regex_search在字符串中查找字符串
- 如何从折叠表达式中获取索引
- 片段着色器中的"错误:在 GLSL 1.30 及更高版本中禁止使用非常量表达式索引的采样器数组"
- 如何根据某个索引将字符串与正则表达式匹配?
- 运行时错误:基0x000000000000溢出到0xffffffffffffffff的指针索引表达式 (basic_st
- C++正则表达式:获取子匹配的捕获组的索引
- 如何消除"仅使用常量表达式索引到数组"警告?
- 使用表达式模板编译时间数组索引--constexpr
- “无效的操作数是二进制表达式”当使用自定义结构作为C 中的MAP索引时
- 索引处C++正则表达式
- 使用正则表达式查找第一个匹配C++索引
- 用于解析c++中数组索引表达式的正则表达式
- 如何在与提升正则表达式匹配的字符串中找到索引