【发布时间】:2012-09-21 07:24:42
【问题描述】:
我正在尝试获取变量名称并将其存储在一个列表中,但是我在提出正则表达式时遇到了麻烦。所以,我有一个文件,如下所示:
float func(float a, float b, float c)
{
float i, j, k;
float2 w;
}
我想做的是获取函数的名称以及参数 var 和 local var。所以,我希望我的正则表达式返回funcabcijkw
我目前的正则表达式是\bfloat*\d* +\w*\b
找到float funcfloat afloat bfloat cfloat ifloat w。我不确定如何分隔浮点部分,并且只使用正则表达式获取 var 名称(我想我可以使用捕获组)但我不确定当同一行上有多个 var 名称时该怎么办。另外,我只对浮点类型的变量感兴趣。任何提示都会有所帮助。
已编辑
我刚想出了这个正则表达式\bfloat*\d* +\w*[ *,* *\w]*\b,它符合我的需要,但我可以只用一个正则表达式来分组获得名称吗?
【问题讨论】:
-
正则表达式不是一种非常可靠的代码解析方式。如果您仍想使用它们,您是否有机会使用 .NET 或其他支持可变长度后视的正则表达式实现?没有它们,即使不是不可能,也很难在单个正则表达式中做到这一点。
-
nop ;/ 我只是在 python 中使用 re 模块执行此操作。但是我刚刚用新的正则表达式编辑了我的帖子,你能看看它是否有任何问题吗?
-
这是我可以接近的
float2?\s+(\w+)(?:,\s*(?!float)(\w+)\s*)*在RegexHero 中测试它,但问题是它不会捕获j,因为我使用的是重复捕获组,它每次都会覆盖匹配项找到一个新匹配,因此j被k覆盖。
标签: regex