我需要从C ++中的以下字符串中提取括号()内的内容;
#82 = IFCCLASSIFICATIONREFERENCE($, 'E05.11.a', '矩形',#28);
我尝试使用正则表达式,但它提供了带括号的输出。
std::regex e2 ("\\((.*?)\\)");
if (std::regex_search(sLine,m,e2)){
}
输出应为:
$,'E05.11.a','Rectangular',#28
答案 0 :(得分:2)
您要查找的结果应该在第一个匹配的子表达式中,即包含在[[1].first, m[1].second)
区间内。
这是因为你的正则表达式也与括号括起来,但你指定了一个分组子表达式,即(.*?)
。以下是某些documentation
答案 1 :(得分:1)
使用前瞻:"(?<=\\()[^)]*?(?=\\))"
。注意,因为这不适用于嵌套括号。
您也可以使用backreferences。
答案 2 :(得分:1)
(?<=\().*(?=\))
尝试这个我只在一个测试仪上测试但是它有效。它基本上会在(
之后和)
之前查找任何字符,但不包括它们。