如何使用regexp捕获多行?

时间:2015-07-08 18:18:23

标签: c++ c regex c++11

这是我的输入字符串:

string MyS = "program{anything}";

我想匹配括号内的所有内容,所以我使用了这个正则表达式:

regex MyR("program{(.*)}");

匹配是(我需要的)=

program{anything}
anything

这是真的,但当我将我的字符串更改为

string Mys = "program{
anything line1
anything line2
}";

这个正则表达式我不能得到我所希望的:

anything line1
anything line2

也就是说,我希望捕获所有行中的所有内容。

我应该使用什么正则表达式来获取{}中一个匹配元素中的所有内容?

1 个答案:

答案 0 :(得分:0)

首先,在量词?之后添加*,或者也可以匹配两个结果之间的项目。 {anything} bla bla bla {somethingelse}可能与anything} bla bla bla {somethingelse匹配。或者,使用[^}]代替您的通配符.

说到女巫,通配符. 不会包含换行符。请改用[^}]来包含换行符。

program{([^}]*?)}应该做得很好。