java - 通过正则表达式分割,没有特定的范围

标签 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

结果应该在我的第一个索引中,它将由 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/

相关文章:

java - 我是否应该使用依赖注入(inject)以获得良好的设计和可测试的代码?

Java : String. 匹配()

java - Android audioRecord.read 缓冲区连接以制作波形

java - 将 HIbernate 与 Spring 的 @Transactional Annotation 结合使用,数据不会持续存在

java - Thymeleaf:添加到现有值而不是替换它们

javascript - 仅从 Express 静态目录提供 .js 文件?

mysql - Mysql 中任意数量字符之间的电子邮件正则表达式

java - 如何一个变量可以管理所有客户端请求

javascript - 正则表达式强调匹配的字符串

regex - Base R Regex 中的正则表达式来识别电子邮件地址