我花了一天的大部分时间学习正则表达式,试图解析我的程序生成的配置文件。目前,配置文件有点像INI文件,但稍后会扩展。它的结构是这样的
> ##~SECTIONNAME~##
> #KEY#value/#
> #KEY#value/#
> #KEY#value/#
> ##~ANOTHERSECTION~##
> #KEY#value/#
> #KEY#value/#
> #KEY#value/#
我想要做的是将部分名称作为字符串返回。我的正则表达式是#{2}~(.*)~#{2},它在在线 perel 正则表达式测试器上运行良好。但是当我通过 c++ 运行它时,我得到了奇怪的结果。
split_regex(sectionList,file,regex("#{2}~(.*)~#{2}"));
sectionList 是一个临时数据持有者,它将保存部分名称的列表。File 是一个字符串,其中包含加载的配置文件中的所有文本。它目前所做的是给我一个空白的第一个索引。第二个索引包含一个字符串,其中包含 LAST 部分下方的所有内容。
我的最终目标是拥有一个成对的向量,一个包含部分列表的文本,另一个包含另一个向量。第二个向量将保存一个类的实例,该类将保存键和值(或者可能只是另一对)。
有什么好的方法来解决这个问题?我现在了解如何编写正则表达式就好了。但即使在查看了 boost 中正则表达式的文档之后,我仍然不太确定如何使用所说的正则表达式。
感谢您阅读我的问题。我真的很感谢你抽出时间来做这件事。任何帮助,将不胜感激。