正则表达式:忽略捕获组中的尾随空格

时间:2017-01-22 09:48:04

标签: regex c++11

我在C ++ 11中编写一个简单的配置文件解析器,并希望使用正则表达式从文本文件中挑选key = value对。我希望能够支持此文件中的注释,用#符号表示。到目前为止,我有以下内容:

^(\w+)\s*=\s*([^#]+)

这匹配从行首开始的字母数字参数名称,允许在=字符周围的可选空格,然后捕获所有内容直到注释符号。这似乎工作得很好,除了以下示例:

param_1 =使用评论#comment

进行测试

第二个捕获组捕获参数值末尾和#符号之间的空白。反正我是否可以忽略第二个捕获组中的任何尾随空格?

1 个答案:

答案 0 :(得分:1)

此正则表达式适用于您的示例:

^(\w+)\s*=\s*([^#\n]+?)\s*(?=#|$)

这是你原来的正则表达式,被修改为不贪婪的第二组,并匹配直到找到#或行尾之前的空格。

Here是一个例子。