java - 正则表达式读取Java中的特定文件格式

标签 java regex file io split

我需要读取这种格式的文件:

(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 );

接下来,对于获取wxyz,你可以这样做:

String system = "(w,x,y,z);";

String[] data = system.replaceAll("\\(|\\);?", "").split(",");

关于java - 正则表达式读取Java中的特定文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435438/

相关文章:

java - 无法找到我的 java 安装位置

java - 画有网格的 JPanel,滚动时导致 CPU 使用率高

java - 正则表达式查找升序和变音符号

javascript - Hubot 正则表达式 - 在第一场比赛中停止,而不是尝试所有比赛?

php - regex- preg_replace - 换行后的空格!

Python删除包含 "l"的单词

c - 将文本文件读入 C 中的行数组

java - 有没有办法在 Java 中推断泛型类型?

java - 为什么类字段不被覆盖

java - 无法使用java在Windows服务器中保存utf8文件