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

时间:2014-08-01 15:03:04

标签: 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
Account#: 3
    Data16
    Data17
    Data18
Account#: 3
    Data19
    Data20
    Data21

结果应该在我的第一个索引中,它将由帐号#:1和Data1-9组成,然后在我的第二个索引帐户#:2中,数据10-15等等......("数据&# 34;这里由新线等组成)

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

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

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

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

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

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