我知道有关于此主题的几个主题,但找到的解决方案特定于特定问题,并且基于改进Regex字符串.
无论如何,我需要处理一个文本输入文件,其中包含的数据将图形结构建模为相邻列表.每行n包含与n相邻的顶点列表(每个都标记为整数),由一个或多个空格字符分隔.我决定在解析之前使用正则表达式字符串检查每一行,而不是NumberFormatExceptions在数据不良的情况下抛出和捕获.
所以这就是代码在这一点上松散的样子:
line = line.trim(); //Remove whitespace in the beginning and in the end of line
if (Pattern.matches("(\\d+\\s*)*", line)){
//split string and parse vertices
}
Run Code Online (Sandbox Code Playgroud)
一行也可能为空,这意味着它的度数为0.
它适用于大多数实例,但是当解析具有~1000个相邻顶点的线(StackOverflow)时失败.我想知道我可以解决这个问题的各种方法.我不想增加JVM堆栈大小,因为程序应保持可移植性.此外,我想继续使用RegEx模式匹配,因为嘿,这就是它的用途!所以希望有人有个好主意.