2017-01-22 85 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