Java 按正则表达式拆分,没有特定范围

Java 按正则表达式拆分,没有特定范围,java,regex,Java,Regex,我面临一个关于解析这篇文章的问题。我想按唯一帐户分割它。见下文: Account#: 1 Data1 Data2 Data3 Account#: 1 Data4 Data5 Data6 Account#: 1 Data7 Data8 Data9 Account#: 2 Data10 Data11 Data12 Account#: 2 Data13 Data14 Data15 A

我面临一个关于解析这篇文章的问题。我想按唯一帐户分割它。见下文:

Account#: 1
    Data1
    Data2
    Data3
Account#: 1
    Data4
    Data5
    Data6
Account#: 1
    Data7
    Data8
    Data9
Account#: 2
    Data10
    Data11
    Data12
Account#: 2
    Data13
    Data14
    Data15
Account#: 3
    Data16
    Data17
    Data18
Account#: 3
    Data19
    Data20
    Data21
结果应该在我的第一个索引中,它将由帐户#:1和数据1-9组成,然后在我的第二个索引帐户#:2和数据10-15组成,依此类推。。(“此处的数据”由新行等组成)

我正在考虑使用拆分(regex),但是,如何将帐户的范围正则化?正则表达式是否有可能匹配唯一值


感谢您的回复。

使用正则表达式仍然需要读取/扫描文件。reg exp只是从文件读取数据后有效扫描数据的一种方式

为什么不实现一些简单的方法来逐行读取文件呢。当您阅读它并遇到每个帐户#时,将后面的数据写入该帐户#的唯一文件,或者写入内存中的数据结构,例如由帐户#键入的java.util.Map(如果数据适合内存)

如果您高效地编写此文件,并且每个帐户的数据都将进入一个输出文件,那么您只需要读取一次输入文件(正则表达式方法无论如何都需要这样做),并且可以在检测到数据用于哪个帐户时将其写入每个帐户文件。如果文件未按帐户#排序,则可以一次打开一定数量的文件输出流,仅当到达文件末尾或打开的文件太多时才关闭。如果需要进一步附加到帐户#的文件,只需在附加模式下重新打开即可。输入文件可以是任意大小,处理它所花费的时间将与其大小成正比


正则表达式用于在数据中查找可定义的模式,而不是查找唯一的值。

为什么要特别使用正则表达式?我不认为它们是完成这项任务的好工具。为什么你不能使用地图呢?因为这个文件太大了,如果我通过阅读这些行来手动检查它,这将需要时间。我也有解析它的想法,但我想寻找使用拆分函数的其他选项。@SyamS我也会尝试。。thanksI将使用
BufferedReader
readLine()
方法。您可以这样做:
if(line.contains('#')和&line.charAt(line.length()-1)!=currentAccountNo){//change account number}