gpt4 book ai didi

python - 正则表达式优化 - C enum typedef

转载 作者:行者123 更新时间:2023-11-28 20:52:14 25 4
gpt4 key购买 nike

对于我的某个项目,我需要从 .h 文件中解析枚举类型定义。例如,让我们来看下一个简单的案例:

typedef enum
{
data1, /*aaagege*/
data2,

data3
}ESample;

这是一个非常简单的声明(没有赋值或任何更复杂的东西),但我编写的正则表达式的性能似乎很差。这是我的表达:

typedef\s+enum\s*\{(?:\s+(\w+)[^\n]*)+\s*\}(\w+)\s*;

我已经在我的一个文件(大约 2000 行代码)上测试了表达式,它花了很长时间......我尝试做的第一件事是让一切成为可能而不是像这样贪婪:

typedef\s+?enum\s*?\{(?:\s+?(\w+?)[^\n]*?)+?\s*?\}(\w+?)\s*?;

但这只会让事情变得更糟。关于如何提高性能的任何建议?如果您可以添加有关您建议的解决方案的解释以及为什么它比我的更好这将对我有很大帮助。

提前致谢,小杉

最佳答案

它慢的原因是因为你的嵌套重复(标有 ^):

(?:\s+(\w+)[^\n]*)+
^ ^

这会导致嵌套回溯,从而导致指数级运行时间。

但是你有一个更大的问题,那就是将一个组放在一个重复中意味着只保留该组的最后一个匹配项:

>>> print m.groups()
('data3', 'ESample')

关于python - 正则表达式优化 - C enum typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com