我需要读取这种格式的文件:
(w,x,y,z),(w,x,y,z), ... ,(w,x,y,z);
全部在一条线上。
//编辑:
我最终还需要对如下文件执行此操作:
(w,x,y,z_1 ... z_n),(w,x,y,z_1 ... z_n), ... ,(w,x,y,z_1 ... z_n);
所以简单地阅读过去的 3 个逗号并不能解决问题。
我的计划是使用 Scanner 类将整个文件读入一个字符串,然后将其拆分为一个由 (w,x,y,z) 部分组成的数组,然后将其拆分为实际的 w、x、y和z。最终,文件中的数据最终会出现在一个对象列表中,类似于:
public class DataBean {
private String w, x, y, z;
...
}
不过,我在想出一个正则表达式时遇到了麻烦。 我试过了
String[] allSystems = scanner.nextLine ( ).split ( "),(" );
当然,它会切断字符串,但我觉得这不是最优雅的解决方案。如果有人有更好的主意,我很想听听!
最佳答案
你可以试试:
String[] allSystems = scanner.nextLine ( ).split ( "(?<=\\)),(?<!\\()" );
你得到 (w,x,y,z)
, (w,x,y,z)
, (w,x,y,z );
接下来,对于获取w
、x
、y
、z
,你可以这样做:
String system = "(w,x,y,z);";
String[] data = system.replaceAll("\\(|\\);?", "").split(",");
关于java - 正则表达式读取Java中的特定文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435438/