Java:在大文件中替换正则表达式
Java replaceFirst(...)
/replaceAll(...)
API 返回字符串,这(如果使用默认堆大小)很可能会导致 OOME 输入大至 20-50M 个字符。这2种方法可以很容易地重写为写入s而不是构造刺痛,有效地消除了一个故障点。java.util.regex.Matcher
Writer
然而,的工厂方法只接受 s,如果我使用 s/s/s,它也可能会抛出一个 OOME。Matcher
CharSequence
String
StringBuffer
StringBuilder
如何包装一个来实现接口(考虑到我的正则表达式可能包含反向引用)?有没有其他解决方案可以替换文件中的正则表达式,并且在大输入上不容易出现OOME?java.io.Reader
CharSequence
换句话说,我如何实现类似于Java中GNU的功能(众所周知,它可以处理多达几TB的文件,同时对扩展正则表达式具有相同的支持)?sed
sed