请教多个正则表达式匹配
我需要在文本文件中搜索一些符合规则的字符串
每个规则都使用正则表达式描述,对每个文件要应用的规则个数在 100~1000 左右
文件的大小就是 100k~1m bytes 的量级
现在的问题是我在应用每个规则时都需要完整扫描一次整个文本文件
这样下来应用所有规则的代价就非常高了,有没有更好的办法?
比如能减少对文本扫描次数的,谢谢
[解决办法]
扫描一次就够了...
正则可以写在一起,分组...
[解决办法]
现在对于规则检测的问题(尤其是正则表达式的检测问题)大多都使用自动机的方法,即把规则写成自动机—FA或NFA,不懂的话可以看看编译原理),对于多个规则,一般要是不太多的话直接合成一个自动机,这样扫描一次文件就能检测完成—FA的很快但是空间需要很大,NFA空间需要很小但是比较慢,可以考虑两者结合);但要是规则非常多的话,就需要分组后,再写成小的合成自动机对文本进行检索。
ps:说实话,这个问题放大的话一直是热点问题,如何以近似线性的时间检索大规模数据集一直是研究的热点问题,你可以看看入侵检测系统之类的东西,或者在google里输入regular expression Matching你就知道有多少人研究了
[解决办法]
多个正则不是可以用|表示or么。。。