【发布时间】:2018-11-13 13:39:03
【问题描述】:
首先抱歉,如果标题不是最清楚,我真的不知道如何更好地表达这个问题。
基本上我将数据接收到一个 bash 脚本中(我无法控制所述数据的格式),该脚本以以下格式到达:
(名称:Foo bar;UUID:现在我要做的是遍历每个键/值对,以便我可以处理信息。显然删除前导/尾随“();”很简单。然后我想也许可以替换“;”使用换行符,但由于层级不同而中断。
关于层级,我不关心里面的循环,我只关心最高层所以说。因此:
TieredField:(编号:123;文本:更多文本;YetAnotherTier:(名称:somename;IP:125.214.21.4);)就我而言是一对简单的。
预期结果:
名称:富吧 UUID: 另一个字段:一些文本 TieredField:(编号:123;文本:更多文本;YetAnotherTier:(名称:somename;IP:125.214.21.4);) 数值数据:4 更多信息:一些信息由于我熟悉遍历文本块的行,将原始字符串转换为上述结果就足够了,尽管直接遍历上述每一行的答案也可以。
不太确定如何处理这个问题,所以任何方向都会受到赞赏。
【问题讨论】:
-
解析器生成器怎么样?有很多,例如antlr.org。 “快速入门;示例”看起来很有希望。