用于在C ++中解析数组索引表达式的正则表达式

时间:2016-08-18 09:01:10

标签: c++ arrays regex c++11

我正在对C ++源代码进行一些语义分析。 我有一个正则表达式将数组声明从int [123] [1234]转换为int [number] [number]

但我希望表达式也能够匹配这些维度 int [i * x][ring_size][w + 6]

如何告诉它匹配内部的任何内容(包括符号和空格)[]?

我的正则表达式如下:regex arrayDims("\\[[0-9]+\\]");。我正在使用C ++ 11正则表达式标题。

谢谢

2 个答案:

答案 0 :(得分:1)

如果您想匹配[]内的任何内容,请尝试使用\\[.+?\\]或类似内容。 ?*变为非贪婪。在此页面上阅读更多内容。

编辑:我必须注意,虽然这对于表达式稍微复杂而不仅仅是数字,但如果表达式中有更多[],这将不起作用。

E.g。将我的模式应用于array[anotherarray[5]]会产生[anotherarray[5],而不是[anotherarray[5]](请注意结尾处的额外括号)。

有关括号匹配的详情,请参阅this answer

答案 1 :(得分:0)

如果要匹配像[w + 6]这样的算术表达式,那么就不能使用正则表达式。算术表达式超出了正则表达式的强大功能。您必须使用某种无上下文解析器。