现在有100个正则放在数组里做文件内容的匹配,现在的写法是在 遍历文件时(很多,几千个文件),每次匹配之前 都编译了一遍,导致运行的时候 cpu 容易暴增到100。 挺费性能的 。现在想法是 能不能先把这些正则 都使用regexp.Compile 编译好,每次匹配文件内容的时候 就不需要再匹配了,直接reg.Find就好了。 求指导。
下图中 是现在的渣渣代码, rule是一个有100个正则的数组。
有疑问加站长微信联系(非本文作者)

现在有100个正则放在数组里做文件内容的匹配,现在的写法是在 遍历文件时(很多,几千个文件),每次匹配之前 都编译了一遍,导致运行的时候 cpu 容易暴增到100。 挺费性能的 。现在想法是 能不能先把这些正则 都使用regexp.Compile 编译好,每次匹配文件内容的时候 就不需要再匹配了,直接reg.Find就好了。 求指导。
下图中 是现在的渣渣代码, rule是一个有100个正则的数组。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
可以在程序启动的时候编译好
编译好里的话,怎么存到一个地方里,例如list 里面,我下次使用时,才好循环遍历出来呢。 这个怎么存呢 能写个代码事例么?
你可以我正则存在文件文本里面,每行文本一个正则,然后通过遍历文本进行匹配
@rock_zhang 我的意思是 比方说我用100个正则,扫描1000个文件,那我就得编译1000*100次。 能不能就编译100次,然后多次匹配 这1000个文件
怎么会编译1000*100次, 你所有文件路径是一个list,然后通过遍历文本,去匹配正则,编译一次就好了
可以存一个 []*regexp.Regexp 这个的数组,然后用的时候遍历这个数组
简单来说就是
同意
谢谢前辈指导,我马上去测试!
因为不会写。。 所以现在就是编译了好多次, 下面大神给了 代码事例 我去测测~ 嘿嘿
搞定了!!!谢谢谢谢!我昨天起码折腾了5个小时。。 离你给的代码最近的写法是这样 var regexes []*regexp 。。 尴尬啊 百度死了都没百度到。 感谢?
感觉你需要去看下 golang 的基础
@momaek 才使用一个星期。没啥经验,肯定会反复看下基础 ^ ^