正则表达式提取括号内的所有内容

时间:2013-08-14 16:04:40

标签: c++ regex string

我需要从C ++中的以下字符串中提取括号()内的内容;

#82 = IFCCLASSIFICATIONREFERENCE($, 'E05.11.a', '矩形',#28);

我尝试使用正则表达式,但它提供了带括号的输出。

std::regex e2 ("\\((.*?)\\)");
if (std::regex_search(sLine,m,e2)){
}

输出应为:

 $,'E05.11.a','Rectangular',#28

3 个答案:

答案 0 :(得分:2)

您要查找的结果应该在第一个匹配的子表达式中,即包含在[[1].first, m[1].second)区间内。

这是因为你的正则表达式也与括号括起来,但你指定了一个分组子表达式,即(.*?)。以下是某些documentation

的起点

答案 1 :(得分:1)

使用前瞻:"(?<=\\()[^)]*?(?=\\))"。注意,因为这不适用于嵌套括号。

您也可以使用backreferences

答案 2 :(得分:1)

(?<=\().*(?=\))

尝试这个我只在一个测试仪上测试但是它有效。它基本上会在(之后和)之前查找任何字符,但不包括它们。