我有一个大约 35KB 的文本输入,我需要从中提取一堆小数据。我使用多个正则表达式来查找数据,这部分工作正常。
我的问题:我应该将大文本拆分为多个较小的字符串并在每个字符串上运行适当的正则表达式,还是将其保留在一个大字符串中并为每个正则表达式重置匹配器?哪种方式最有效率?
如果它运行得不是太慢,那么请使用您当前拥有的运行速度足够快的任何东西。
否则,无论如何,您都不应该为此任务使用原始正则表达式。一旦您提到从中提取“少量数据”的“多个正则表达式”,您就是在谈论编写解析器并且应该使用体面的解析工具。
当您使用 java 时,我建议您从jFlex开始,它是一个非常成熟且稳定的 C 工具的成熟 java 实现。
对于大多数任务,jFlex 将是您所需要的,但如果问题被证明更复杂,它还可以与许多 java 解析器生成器顺利集成。我个人的偏好是略显晦涩的Beaver。
当然,如果您可以将它实现为一组正则表达式,它不会更复杂,jFlex 将为您完成这项工作。