gpt4 book ai didi

java - 解析文本的最快/最简单的方法

转载 作者:行者123 更新时间:2023-12-01 06:23:35 25 4
gpt4 key购买 nike

我正在尝试解析一些文本,正在寻找最快/最简单的解决方案。我尝试过使用正则表达式,但使用 Java 却花了很长时间...

这是我尝试解析的文本结构:

*****************
ID: 1234567 // 7 digit uuid
mistakes: There may be some mistakes here, or there may not be any mistakes //optional
mistake type: mistake background // "YES" or "NO"
report: <xml><item>blah, blah</item></xml>

*****************

实际上,该文件可能如下所示:

*****************
ID: 1234567
mistakes:
NO: happened on the playground
report: <xml><item>black eye when playing basketball</item><reason>elbow</reason></xml>

*****************

*****************
ID: 1234568
mistakes: Teacher was not watching students at the time of incident
YES: teacher turned her back after seeing an altercation
report: <xml><item>fight</item><reason>None</reason></xml>

*****************

*****************
ID: 1234569
mistakes:
NO
report: <xml><item>Child needed band-aid</item><reason>scrape</reason></xml>

*****************

*****************
ID: 1234570
mistakes:
NO
report: <xml><item>Child needed tissue</item><reason>runny nose</reason></xml>

*****************
...
...

我正在尝试将“键”(ID、错误、错误类型、报告)放入 Map 中以进行进一步聚合和处理。

我尝试过使用正则表达式,但收效甚微,但客户端不断更改报告结构并抛弃了整个模式。我正在寻找可能更容易维护的东西。过去,我对这样的数据进行 xsl 转换很轻松,但这不是纯 xml,我不知道 Java 是否会抛出或不给出当前格式。我已询问客户是否愿意更改格式,但他们对此不感兴趣。

有人对如何使这种解析更易于维护有任何想法吗?

谢谢!

<小时/>

编辑:

我没有带正则表达式,但要点如下

ID:\s*(\\d{7}).*错误:\s*(\\d*).*错误类型:\s*(\\d*).*报告:\s*(.*)

最佳答案

我还无法对帖子发表评论,这就是为什么我将其保留为答案。如果你有固定数量的字段,你可以逐行读取,并且在你的行startsWith("^\.*")之后只写6行。然后,您将继续使用类似的逻辑将它们存储在 map 中。如果它startsWith("^mistakes:"),则将剥离":mistakes"后剩下的内容存储为值。

关于java - 解析文本的最快/最简单的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29549817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com