2017-01-22 84 views
0

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

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

此相匹配的字母数字参数名称开始在该行的开头,让周围的字符=可选空白,然后抓住一切都交给一个注释符号。这似乎工作得非常好,除了在下面的例子:

PARAM_1 =与注释#评论

测试第二捕获组捕获参数值的端部和#符号之间的空格。无论如何,我可以忽略第二个捕获组中的任何尾随空白吗?

+0

您正在使用哪种语言/工具? –

+0

我使用C++ 11和std :: regex_search – rozzy

回答

1

此正则表达式与您的例子:发现

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

这是你原来的正则表达式,修改为不贪为第二组,比赛直到空格前#或结束行。

Here就是一个例子。

+0

这很好,谢谢! – rozzy