允许快速访问结构化文本中的子字符串的数据结构?

时间:2017-02-15 07:47:45

标签: string algorithm data-structures

我在内存中有一些较大的(几KB,可能是1 MB)字符串,它们包含结构化文本,如下例所示:

Def[prop=A, ... some more kv pairs]
  SubDef[prop=B, ... some more kv pairs]
    SubSubDef[prop=C, ... some more kv pairs]
    ... goes deeper ...
Def[prop=X, ... some more kv pairs]
  SubDef[prop=Y, ... some more kv pairs]
    SubSubDef[prop=Z, ... some more kv pairs]
    ... goes deeper ...
SubDef[prop=Y, ... some more kv pairs]   <- yeah, SubDef can also be on level 1
  SubSubDef[prop=Z, ... some more kv pairs]

我需要从文件中读取这些字符串,然后“查询”它们的数据。例如,查询将是:Def[].SubDef[].prop[],这意味着在prop内的所有SubDef内提供所有Def

我的想法是当我读取文件结构时,我可以以某种方式索引表示结构的关键字。就像,我可以保留所有Def字符串的位置数组,所有SubDef和所有SubSubDef,所以当我需要搜索SubDef属性时,我可以跳转到整个字符串中的这些关键字的偏移量。

我想知道是否有一些通用的数据结构?基本上它是某种图形?不是真正的树,因为SubDef也可以在1级。

为了澄清,该字符串中有很多关键字,但我只关心它们的一部分。

是否有任何通用数据结构来表示结构化字符串中关键字的偏移量?

1 个答案:

答案 0 :(得分:0)

它实际上是一棵树,在第一层你有树子元素的根:def,def和subdef。

将您的结构转换为树,然后查询您可以使用任何算法(甚至是XPath)