我在C ++ 11中编写一个简单的配置文件解析器,并希望使用正则表达式从文本文件中挑选key = value对。我希望能够支持此文件中的注释,用#符号表示。到目前为止,我有以下内容:
^(\w+)\s*=\s*([^#]+)
这匹配从行首开始的字母数字参数名称,允许在=字符周围的可选空格,然后捕获所有内容直到注释符号。这似乎工作得很好,除了以下示例:
param_1 =使用评论#comment
进行测试第二个捕获组捕获参数值末尾和#符号之间的空白。反正我是否可以忽略第二个捕获组中的任何尾随空格?
答案 0 :(得分:1)
此正则表达式适用于您的示例:
^(\w+)\s*=\s*([^#\n]+?)\s*(?=#|$)
这是你原来的正则表达式,被修改为不贪婪的第二组,并匹配直到找到#
或行尾之前的空格。
Here是一个例子。