增强正则表达式混淆
Boost regex confusion
我花了一天的大部分时间学习正则表达式,试图解析我的程序生成的配置文件。目前,配置文件与INI文件有点类似,但稍后将对其进行扩展。它的结构是这样的
> ##~SECTIONNAME~##
> #KEY#value/#
> #KEY#value/#
> #KEY#value/#
> ##~ANOTHERSECTION~##
> #KEY#value/#
> #KEY#value/#
> #KEY#value/#
我要做的是把section名作为字符串拿回来。我的正则表达式是#{2}~(.*)~#{2},它在在线perel正则表达式测试器上运行良好。但是当我在c++中运行它时,我得到了奇怪的结果。
split_regex(sectionList,file,regex("#{2}~(.*)~#{2}"));
sectionList是一个临时数据持有者,它将保存一个section名称列表。File是一个字符串,包含加载的配置文件中的所有文本。它现在做的是给我一个空白的第一个索引。第二个索引保存一个字符串,包含LAST节以下的所有内容。
我的最终目标是有一对向量,一个持有节列表的文本,另一个持有另一个向量。第二个向量将保存保存键和值(或者只是另一对)的类的实例。
有什么好的方法去做这件事?我现在明白怎么写正则表达式了。但是,即使在查看了boost中的正则表达式文档之后,我仍然不太确定如何使用这些正则表达式。
谢谢你阅读我的问题。我真的很感谢你花时间来做这件事。
查看Boost split_regex
-函数的文档。提供的regexp用作分隔符来分隔字符串。
你的regexp匹配你想要的部分,但是如果你真的想使用split_regex
,它应该匹配你的section名之间的所有。
最新版本的c++ (c++ 11)提供了关于正则表达式的新特性。这个特殊的函数能够确定字符串是否与给定的regexp匹配,并返回所有匹配。请查看最后一个链接页面提供的示例。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++ 使用增强正则表达式库时断言崩溃
- 在带有brew的MacOS上链接时缺少增强ICU正则表达式符号
- C++ 增强正则表达式与标准库正则表达式匹配结果
- 这种使用增强正则表达式库有什么问题
- 正则表达式和增强
- 如何使用增强正则表达式替换方法
- 如何使用增强正则表达式在单行中匹配单词
- 使用 VS2010 C++/增强的正则表达式
- 通过从文件读取来增强正则表达式匹配
- 正则表达式增强c++
- 正则表达式匹配组增强c++
- 增强特殊字符的正则表达式模式
- Qt正则表达式增强正则表达式转换从字符串内部取数
- 增强正则表达式捕获
- 增强正则表达式捕获组
- 使用增强正则表达式库编译程序时遇到问题
- C++ 增强正则表达式不保存捕获
- 增强正则表达式混淆