gpt4 book ai didi

java - 在单个字符串上匹配相同的表达式并转换为列表

转载 作者:行者123 更新时间:2023-12-01 09:47:40 24 4
gpt4 key购买 nike

我已经为此工作了一段时间,我想我在这里有点超前了。由于某些原因,我得到了当你 toString 一个 Java 对象时得到的输出,并且我试图将它序列化回一个对象。如果它是单个对象,那就很容易,但我有一个列表,我想捕获列表中的每一个对象。

所以对象

List(AcquireRequest(x2,x3,1466008848103,5,5,5,whatever,List(ResourceAllocation(allocation,5), ResourceAllocation(Lolication,25))), AcquireRequest(x2,x3,1466008848103,5,5,5,whatever,List(ResourceAllocation(allocation,5), ResourceAllocation(Lolication,25))), AcquireRequest(x2,x3,1466008848103,5,5,5,whatever,List(ResourceAllocation(allocation,5), ResourceAllocation(Lolication,555))))

这是 AcquireRequest 对象的列表,其中包含多个字段字符串和/或数字以及另一个对象的列表。我想要的只是单独匹配 AcquireRequest 字符串,这样我就会得到一个 List(String),每个字符串都带有一个 AcquireRequest。

我尝试了模式匹配、使用 java matcher 等等。

我自己的一些正则表达式尝试:

(AcquireRequest(.(?=,\s).(?=,)\d*(?=,)\d*(?=,)\d*(?=,)\d*(?=,).?(?=,).(?=)))(?=,|))

AcquireRequest((.),(.),(\d*),(\d*),(\d*),(\d*),(.?),(.))

AcquireRequest((.+))

第一个是我当前的尝试,但它仍然匹配除外部 List( ) 之外的所有内容。我想我只需要一个前瞻,因为在 AcquireRequest 表达式之后,我要么得到一个“,”,这意味着另一个元素即将到来,要么得到一个 ),这意味着它是最后一个。

感谢您的帮助!

最佳答案

它必须是一个正则表达式吗?像这样的事情怎么样:

   string
.replaceAll("""\w+?\(|\)+""", "")
.split(",\\s*")
.grouped(11)

只要数据中的字符串值不包含括号或逗号,此操作就应该有效。但如果他们这样做了,那么你就完蛋了,没有正则表达式解决方案,你需要一个真正的语法解析器。

响应最后一条评论(关于内部列表的大小可变)。我实际上从来没有打算为您提供完整的解决方案(您可能最好缺乏 freelancer.com 让人们按照您的具体规范编写代码),只是想为您指出正确的方向。但是,好吧,这样怎么样:

  string
.split("""\({2,},?\s*""")
.map { _.replaceAll("""\w+?\(|\)+""", "").split(",\\s*") }

关于java - 在单个字符串上匹配相同的表达式并转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37854800/

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