文本中的关联数组
本文关键字:数组 关联 文本 | 更新日期: 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
。
要检查字符串是否为组名,请首先对其进行修剪,然后检查最后一个字符是否为':'
。如果它不是数据行,也不是组名,则可以推断它是名称/值对。
这假设输入文件格式良好:组名总是以':'
等结尾。行中的空格无关紧要。