我花了大部分时间学习正则表达式,试图解析我的程序所做的配置文件。目前,配置文件隐约类似于INI文件,但稍后将进行扩展。它的结构是这样的Boost正则表达式混淆
> ##~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是一个临时数据保存器,它将保存段名的列表。文件是包含来自加载的配置文件的所有文本的字符串。目前做的是给我一个空白的第一个索引。第二个索引包含一个字符串,其中包含LAST部分之下的所有内容
我的最终目标是拥有一个对的向量,一个持有部分列表的文本,另一个持有另一个向量。第二个向量将保存将保存键和值的类的实例(或者可能只是另一对)。
这是怎么回事?我明白如何正确编写正则表达式。但即使查看了正则表达式的boost文档,我仍然不确定如何去使用正则表达式。
感谢您阅读我的问题。我真的很感激你花时间这样做。任何帮助,将不胜感激。
...另请参阅boost的'regex_search'。 –
通过Boost的[regex_iterator](http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/ref/regex_iterator.html),您甚至可以遍历所有匹配项。 – Sander
谢谢。这个答案让我走上了正确的轨道。并感谢两位评论。我也会检查这些部分。 同时,我有足够的设置我的文件操作的基础知识。非常感谢:D – Legacyblade