如何解析形成这样的文本?
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]
或者做foreachs等等。这是否有可能具有正则表达的力量?
答案 0 :(得分:1)
我认为你可以不用正则表达式。只需逐行扫描输入。如果line包含字符串"Data"
,则递增data_index
(最初设置为-1)。如果该行看起来像"text:"
,则将变量group_name
设置为text
。如果该行看起来像"text_left:text_right"
,则将变量name
设置为text_left
并执行操作data[data_index][group_name][name] = text_right
。
要检查字符串是否为组名,请首先修剪它,然后检查最后一个字符是否为':'
。如果它不是数据行而不是组名,则可以推断它是名称/值对。
这假设输入文件格式正确:组名始终以':'
结尾,依此类推。行中的空格并不重要。