微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在同一个字符串上检查超过1500个正则表达式模式匹配的最快方法

我有超过1500个正则表达式模式,需要在相同的100 – 200 kb文本文件上运行并返回成功模式列表.文件来自外部,所以我不能对该文件做任何假设.

问题是,我能以某种方式使处理速度比将所有这些正则表达式运行到同一文本更快吗?

逻辑上输入文件是相同的,后来的正则表达式可以使用已经处理过的一些信息.如果我们认为每个正则表达式都是有限自动化的,那么运行1500个有限自动机到相同的文本,肯定比运行一个加入自动化的速度慢.所以问题是,我可以以某种方式创建加入的正则表达式吗?

解决方法

我认为这在理论上是可能的,但似乎是一项非常重要的任务.可能的方法可能是:

>将所有正则表达式转换为有限状态机.
>将这些组合成一个单独的fsm.
>优化生成的状态.

优化将是一个关键步骤,因为输入很长(100-200kb).内存可能是一个问题,而性能可能会变得更糟.我不知道是否存在用于此目的的库,但这里是theoretical answer.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐