Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost正则表达式混乱_C++_Regex_Boost - Fatal编程技术网

C++ Boost正则表达式混乱

C++ Boost正则表达式混乱,c++,regex,boost,C++,Regex,Boost,我花了一天的大部分时间学习正则表达式,试图解析程序生成的配置文件。目前,配置文件与INI文件有点相似,但稍后将对其进行扩展。它的结构是这样的 > ##~SECTIONNAME~## > #KEY#value/# > #KEY#value/# > #KEY#value/# > ##~ANOTHERSECTION~## > #KEY#value/# > #KEY#value/# > #KEY#value/# 我要做的是将节名作为字符串返回。我的正则

我花了一天的大部分时间学习正则表达式,试图解析程序生成的配置文件。目前,配置文件与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是一个字符串,包含加载的配置文件中的所有文本。它现在做的是给我一个空白的第一个索引。第二个索引包含一个字符串,其中包含最后一节下面的所有内容

我的最终目标是得到一个成对的向量,一个保存节列表的文本,另一个保存另一个向量。第二个向量将包含一个类的实例,该类将包含键和值(或者可能只是另一对)

做这件事的好方法是什么?我现在很了解如何编写正则表达式。但是,即使看了boost中正则表达式的文档,我仍然不太确定如何使用这些正则表达式

谢谢你阅读我的问题。我真的很感谢你花时间这么做。任何帮助都将不胜感激。

请查看Boost
split\u regex
-函数的。提供的regexp用作分隔符来拆分字符串

您的regexp与您想要的部分匹配,但是如果您真的想使用
split\u regex
它应该匹配节名之间的所有内容


最新版本的C++(C++ 11)提供了相关的正则表达式。能够确定字符串是否与给定的regexp匹配,并返回所有匹配项。请看最后一个链接页面上提供的示例。

…另请参阅boost的
regex\u search
。使用来自boost的示例,您甚至可以迭代所有匹配项。谢谢。这个答案让我走上了正确的道路。谢谢你们两位的评论。我也会查看这些部分。同时,我有足够的时间来设置文件操作的基础知识。非常感谢:D