我将从大量文件中读取一个长字符串。我需要能够确定是否可以在每个字符串中找到特定类型的模式。它将在一些随机文本之前和之后有一个特定的字符串。本质上;它可能看起来像“ABC[??????]DEF”,其中问号是任何字符串(很可能不超过 50 个字符,也不短于 15 个字符)。
我无法完全让它发挥作用。我认为正则表达式是最好的方法,但我不知道如何使用正则表达式。有人可以帮助我吗?
最佳答案
请注意,像 ABC.{15,50}DEF
这样的 Java 正则表达式如果应用于许多(!)大(!)文件,效率会很低。应用于 ABCDEABCDEABCDEABCDEABCDE...
将在每五个位置回溯 35 次。
此问题的有效解决方案是:
- 使用搜索索引(例如 Lucene)“ABC DEF”~50 进行邻近搜索
- 通配符搜索(Flexible pattern matching in strings 中提到)
- 使用非回溯自动机的正则表达式搜索( re2j 、 brics automaton 或 patternsearchalgorithms )
- 使用位并行自动机进行正则表达式搜索
- 常规因素搜索
不幸的是,大多数算法都不能作为库使用。
关于java - 用于查找具有随机中心的特定字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274984/