gpt4 book ai didi

c++ - boost 正则表达式混淆

转载 作者:太空狗 更新时间:2023-10-29 21:46:53 25 4
gpt4 key购买 nike

我花了一天的大部分时间学习正则表达式,试图解析我的程序生成的配置文件。目前,配置文件隐约类似于一个 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 是一个临时数据保存器,将保存部分名称列表。文件是一个字符串,其中包含加载的配置文件中的所有文本。它目前所做的是给我一个空白的第一个索引。第二个索引包含一个字符串,其中包含 LAST 部分下方的所有内容。

我的最终目标是拥有一个 vector 对,一个包含部分列表的文本,另一个包含另一个 vector 。第二个 vector 将包含一个类的实例,该类将包含键和值(或者可能只是另一对)。

解决这个问题的好方法是什么?我现在明白如何编写正则表达式了。但即使在查看了 boost 中正则表达式的文档之后,我仍然不太确定如何使用所说的正则表达式。

感谢阅读我的问题。我真的很感谢你抽出时间来做这件事。任何帮助将不胜感激。

最佳答案

看看 documentation对于 Boost split_regex 函数。提供的正则表达式用作分割字符串的分隔符。

您的正则表达式匹配您想要的部分,但如果您真的想使用 split_regex,它应该匹配您的部分名称​​之间的所有内容。

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

关于c++ - boost 正则表达式混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com