文本中的关联数组

本文关键字:数组 关联 文本 | 更新日期: 2023-09-27 18:25:45

如何解析格式如下的文本?

Data
    Name of a group:
        Name:    Value
        Name:          Value
        Name:   Value
Data
    Name of a group:
        Name:   Value
    Name of a group:
        Name:  Value
        Name:     Value

它可以有多个Data,每个数据可以有多个子Named groups,其中每一个数据内部都可以有多对Name Value,整个文本内部的空格数量也可以不同,这意味着在第一个Data之前可以有两个空格,在第二个之前根本没有。

解析后,我希望能够获得关联数组,这样我就可以通过data[0][Name of group][Value name]或foreach等方式访问数据。这在正则表达式的强大下可能吗?

文本中的关联数组

我认为您可以不使用正则表达式。只需逐行扫描输入即可。如果行包含字符串"Data",则递增data_index(最初设置为-1)。如果该行看起来像"text:",则将变量group_name设置为text。如果该行看起来像"text_left:text_right",则将变量name设置为text_left并执行操作data[data_index][group_name][name] = text_right

要检查字符串是否为组名,请首先对其进行修剪,然后检查最后一个字符是否为':'。如果它不是数据行,也不是组名,则可以推断它是名称/值对。

这假设输入文件格式良好:组名总是以':'等结尾。行中的空格无关紧要。