0

如果我有超过 800 兆的数据,数据就是没有断线。我将使用正则表达式示例 Ex。

String.replaceAll("([a-z][a-z][.?!]+) ?([A-Z][a-z]+ )", "$1\r\n$2");

或其他。

请指导我如何在文件大小的情况下使用正则表达式。

4

2 回答 2

0

只要你有足够的内存来加载内存中的数据,我就看不出为什么它不能完成。我认为如果它的 32 位系统 64 可以处理更大量的寻址并且那时它将使用它的 4gb ~ 限制,那么限制值将是架构。

您还需要将 java vm 设置为比默认的 vm max memory 设置大很多。例如

java -Xmx1g myprogram

我仍然不会推荐它。没有办法可以先拆分文件。找到一个共同的界限。谢谢

于 2013-01-10T01:36:45.120 回答
0

您绝对不想对这样的大小使用正则表达式。

如果您没有任何经典的 Unix 工具(sed、perl、awk)可以提供帮助,请查看 Guava 的CharMatcher:以字节数组读取文件,将其转换为字符串,使用 CharMatcher 查找任何感兴趣的东西,如果是的话,写一个修改过的数组。

而且,当然,不要内联,而是在另一个文件中写入,如果您已成功执行转换,请重命名为原始文件。

例如,对于您的标点符号需求,您可以使用CharMatcher.anyOf("?!.").

于 2013-01-10T01:40:21.230 回答