我面临着解析此文本的问题。我想按唯一帐户# 拆分它。见下文:
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
结果应该在我的第一个索引中,它将由 Account#: 1 和 Data1-9 组成,然后在我的第二个索引中 Account#: 2 和 Data 10-15 等组成。(这里的“数据”由新行等)
我正在考虑使用 split(regex) 但是,我如何正则表达式 account# 的范围?正则表达式有可能匹配唯一值吗?
感谢您的回复。
最佳答案
使用正则表达式仍然需要读取/扫描文件。 reg exp 只是一种从文件读取数据后有效扫描数据的方法。
为什么不实现一些简单的方法来逐行读取一次文件。当您阅读它并遇到每个帐户编号时,将后面的数据写入该帐户编号的唯一文件,或者写入内存中的数据结构,例如由帐户编号键入的 java.util.Map(如果数据将适合内存)。
如果您有效地编写此内容,并且将数据发送到每个帐户的输出文件,则您只需要读取输入文件一次(正则表达式方法无论如何都需要这样做),并且可以写出到每个帐户当您检测到数据属于哪个帐户时,将文件记录下来。如果文件不是按帐户#排序的,则您可以同时保持一定数量的文件输出流打开,仅在到达文件末尾或打开的文件输出流过多时才关闭它们。如果您需要进一步追加到帐户的文件#,只需在追加模式下重新打开即可。输入文件可以是任意大小,处理它所花费的时间将与其大小成正比。
正则表达式用于查找数据中可定义的模式,而不是发现唯一值。
关于java - 通过正则表达式分割,没有特定的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25083153/