请教多个正则表达式匹配

gaoht 2010-05-13 02:39:58
我需要在文本文件中搜索一些符合规则的字符串

每个规则都使用正则表达式描述,对每个文件要应用的规则个数在 100~1000 左右

文件的大小就是 100k~1m bytes 的量级

现在的问题是我在应用每个规则时都需要完整扫描一次整个文本文件

这样下来应用所有规则的代价就非常高了,有没有更好的办法?

比如能减少对文本扫描次数的,谢谢
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jn989 2010-05-24
  • 打赏
  • 举报
回复
现在对于规则检测的问题(尤其是正则表达式的检测问题)大多都使用自动机的方法,即把规则写成自动机(DFA或NFA,不懂的话可以看看编译原理),对于多个规则,一般要是不太多的话直接合成一个自动机,这样扫描一次文件就能检测完成(DFA的很快但是空间需要很大,NFA空间需要很小但是比较慢,可以考虑两者结合);但要是规则非常多的话,就需要分组后,再写成小的合成自动机对文本进行检索。

ps:说实话,这个问题放大的话一直是热点问题,如何以近似线性的时间检索大规模数据集一直是研究的热点问题,你可以看看入侵检测系统之类的东西,或者在google里输入regular expression Matching你就知道有多少人研究了
nihuajie05 2010-05-24
  • 打赏
  • 举报
回复
多个正则不是可以用|表示or么。。。
guoyunsky 2010-05-13
  • 打赏
  • 举报
回复
扫描一次就够了...
正则可以写在一起,分组...

2,760

社区成员

发帖
与我相关
我的任务
社区描述
搜索引擎的服务器通过网络搜索软件或网络登录等方式,将Internet上大量网站的页面信息收集到本地,经过加工处理建立信息数据库和索引数据库。
社区管理员
  • 搜索引擎技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧