我尝试了@Wiktor编写的代码,效果很好
import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestRegex { public static void main(String[] args) { String text = "this is a junk linen" + "n" + "#ifdef FEATURE n" + "#endif // end of FEATUREn" + "n" + "this is a junk linen" + "n" + "#ifdef FEATUREn" + "n" + "this is a junk line that should be matched: HOLasduiqwhei & // FEATURE fjfefj #endif // hn" + "n" + "#endif FEATUREn" + "n" + "this is a junk line"; // this version does not use Pattern.MULTILINE, this should reduce the backtraking Matcher matcher2 = Pattern.compile("\n#ifdef FEATURE((?:\r?\n(?!#endif (?:// end of )?FEATURE).*)*)\r?\n#endif (?:// end of )?FEATURE").matcher(text); while (matcher2.find()) { System.out.println(matcher2.group()); } }}
因此,如果文件太大,则可以将输入实现为
CharSequence,从而可以包装大文本文件。为什么?因为
Matcher从a 构建a
Pattern需要一个
CharSequence参数。
https://github.com/fge/largetext
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)