读取一个文本配置文件:使用正则表达式解析



寻找一种使用多行正则表达式匹配器读取以下配置文件示例的方法。我可以逐行读取文件,但我想要得到体面的灵活正则表达式匹配的细节。

所以配置文件被如下代码块填充:

blockName BLOCK
     IDENTIFIER value
     IDENTIFIER value
     IDENTIFIER
          "string literal value that
          could span multiple lines"

标识符的数量可以从1到无穷大。IDENTIFIER可以是NAME、DESCRIPTION、TYPE等。

我以前从来没有使用过多行正则表达式。我对这个过程不是很熟悉。实际上,我想使用findAll函数使用这个正则表达式将所有解析过的块数据放入一个数据结构中进行处理。

编辑:澄清:我只希望阅读这个文件一次。我不在乎效率或优雅。我想把信息读入一个数据结构,然后以另一种格式输出。这是一个大文件(3000行),我不想手工做这个。

我不认为regex是最好的工具。

试试这个,它应该在perl正则表达式中工作:

([wd]*)s+BLOCKs*n(s*(NAME|DESCRIPTION|TYPE|...)s*([wd]*|"(.*)")s*n)+

我使用以下测试文本在REGex TESTER上验证了它:

blockName BLOCK
     NAME value
     NAME value
     DESCRIPTION
          "string literal value that
          could span multiple lines"
otherName BLOCK
     NAME value
     TYPE value
     DESCRIPTION
          "string literal value that
          could span multiple lines"

如果文件以换行符

结尾,它将只查找最后一个块/标识符

最新更新