c++ - 如何使用正则表达式捕获多行?

标签 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

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

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

最佳答案

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

说到女巫,通配符. 包含换行符。使用 [^}] 代替,也可以包含换行符。

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

关于c++ - 如何使用正则表达式捕获多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31300577/

相关文章:

c++ - 将 char num[50] 复制到 std::string

c++ - 起始指针和内部指针之间的区别是什么以及何时使用它们

c++ - SFINAE : Delete a function with the same prototype

c - fork 和 execve 的问题

regex - 匹配空格但不匹配换行符

c++ - 模板参数推导不一致

C API 设计 : what to do when malloc returns NULL?

c - 排序链表中的最高数字

python - token 捕获序列 python 无法正常工作

regex - 为什么这个简单的 bash 正则表达式不返回 true?